2017-08-16 93 views
0

我想部署一個GWT應用程序,它具有連接到Websphere 8.5.5的CMIS連接器。我在經典開發模式(在Jetty上)或Tomcat服務器上運行它時都沒有問題 - 都使用Oracle 7 JDK。缺少運行時庫Websphere

在部署到WebSphere(使用IBM JDK),我碰到這樣的:

com.ibm.ws.webcontainer.webapp.WebApp notifyServletContextCreated SRVE0283E: Exception caught while initializing context: {0} 
           java.lang.VerifyError 
     at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl.<clinit>(RuntimeBuiltinLeafInfoImpl.java:224) 
     at com.sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.<init>(RuntimeTypeInfoSetImpl.java:61) 
     at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:129) 
     at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:81) 
     at com.sun.xml.bind.v2.model.impl.ModelBuilder.<init>(ModelBuilder.java:152) 
     at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.<init>(RuntimeModelBuilder.java:89) 
     at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:431) 
     at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:288) 
     at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1111) 
     at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:154) 
     at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:121) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) 
     at java.lang.reflect.Method.invoke(Method.java:508) 
     at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:211) 
     at javax.xml.bind.ContextFinder.find(ContextFinder.java:372) 
     at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574) 
     at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522) 
     at my.package.core.server.xml.impl.XmlDataBindingServiceJAXBImpl.getJaxbContext(XmlDataBindingServiceJAXBImpl.java:245) 
     at my.package.core.server.xml.impl.XmlDataBindingServiceJAXBImpl$1.makeObject(XmlDataBindingServiceJAXBImpl.java:72) 
     at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220) 
     at my.package.core.server.xml.impl.XmlDataBindingServiceJAXBImpl.parse(XmlDataBindingServiceJAXBImpl.java:158) 
     at my.package.core.server.xml.impl.XmlDataBindingServiceJAXBImpl.parse(XmlDataBindingServiceJAXBImpl.java:128) 
     at my.package.core.server.license.LicenseProvider.readFromXml(LicenseProvider.java:155) 
     at my.package.core.server.license.LicenseProvider.get(LicenseProvider.java:123) 
     at my.package.core.server.license.LicenseProvider.get(LicenseProvider.java:50) 
     at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) 
     at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72) 
     at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61) 
     at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:62) 
     at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016) 
     at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) 
     at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012) 
     at my.package.core.server.services.i18n.I18NConfigurationServiceImpl.getLanguages(I18NConfigurationServiceImpl.java:53) 
     at my.package.core.server.schema.SchemaLoaderImpl.scanPackage(SchemaLoaderImpl.java:150) 
     at my.package.core.server.schema.SchemaLoaderImpl.loadSchema(SchemaLoaderImpl.java:204) 
     at my.package.core.server.schema.SchemaLoaderImpl.loadSchema(SchemaLoaderImpl.java:195) 
     at my.package.core.server.schema.CustomSchemaLoaderImpl.loadSchema(CustomSchemaLoaderImpl.java:71) 
     at my.package.core.server.services.SchemaServiceImpl.getSchema(SchemaServiceImpl.java:144) 
     at my.package.core.server.SchemaDBInitialize.start(SchemaDBInitialize.java:91) 
     at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.invoke(JpaLocalTxnInterceptor.java:70) 
     at my.package.core.server.LsServer.start(LsServer.java:161) 
     at my.package.core.server.AppInitializer.contextInitialized(AppInitializer.java:210) 

這是不完整的堆棧跟蹤 - 我只是其中包括在WebSphere東西停止部分。該行my.package.core.server.xml.impl.XmlDataBindingServiceJAXBImpl.getJaxbContext(XmlDataBindingServiceJAXBImpl.java:245)只需從javax.xml.bind調用JAXBContext即可。這一直進行到com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl來自jaxb-impl依賴關係,這是對chemistry-opencmis-client-impl的臨時依賴關係。

這些都是從我的POM文件的依賴聲明:

<dependency> 
      <groupId>org.apache.chemistry.opencmis</groupId> 
      <artifactId>chemistry-opencmis-client-impl</artifactId> 
      <version>0.8.0</version> 
      <exclusions> 
       <exclusion> 
        <artifactId>chemistry-opencmis-client-bindings</artifactId> 
        <groupId>org.apache.chemistry.opencmis</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.chemistry.opencmis</groupId> 
      <artifactId>chemistry-opencmis-client-bindings-websphere</artifactId> 
      <version>0.8.0</version> 
     </dependency> 

我曾嘗試編譯與IBM JDK的項目。

我想我可能會在運行時缺少一些庫,但我不確定哪些和當然是爲什麼(如前所述,當我部署到Tomcat時沒有此問題)。我會很感激任何幫助或暗示,因爲我一直在爲這個問題苦苦掙扎很長時間。

+1

您是否嘗試過最新的OpenCMIS版本? OpenCMIS 0.8.0已於5年前發佈。從那以後,包括依賴關係在內發生了很多變化。 –

+0

它似乎與其他人添加到項目中的axis2 1.6.2不兼容,但可能更容易升級axis2。會試試看。 – vasigorc

回答

0

@FlorianMüller的建議與Axis2升級至1.7.5(如評論中所述)一起工作。然後,在部署衝突的jaxb庫期間,我們有很多VerifyErrors。刪除所有xml解析依賴關係(將它們放到WebSphere配置文件的提供範圍內) - 在我們的案例中,這些是geronimo-stax-api,xercesImpl,xml-apis,xml-beans,激活 - 最終解決了問題。