2016-04-27 11 views
0

WebアプリケーションをApache TomcatやJBossなどのサーバーでうまく動作するWebアプリケーションから呼び出そうとしていますが、Weblogicサーバーでは例外として失敗します。weblogicサーバのCXF Webserviceの問題

これにはどのような解決策がありますか?あなたはCXFからのものではない日のリファレンス実装(com.sun.xml ...)であるためにあなたのJAXBプロバイダを定義する必要がありますあなたのweblogic-application.xmlの

java.lang.ExceptionInInitializerError 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
     at java.lang.Class.newInstance(Class.java:379) 
     at org.apache.geronimo.osgi.locator.ProviderLocator.getService(ProviderLocator.java:234) 
     at javax.xml.ws.spi.FactoryFinder$3.run(FactoryFinder.java:176) 
     at javax.xml.ws.spi.FactoryFinder.doPrivileged(FactoryFinder.java:220) 
     at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:160) 
     at javax.xml.ws.spi.Provider.provider(Provider.java:43) 
     at javax.xml.ws.Service.<init>(Service.java:35) 
     at com.my.Tpackage.imageSign.FIUsbWebServiceService.<init>(FIUsbWebServiceService.java:40) 
     at com.my.Tpackage.imageSign.SignatureWebServiceClient.getWebServiceResponse(SignatureWebServiceClient.java:32) 
     at com.my.Tpackage.imageSign.MyAction.getMySignatureImage(MyAction.java:47) 
     at com.my.Tpackage.imageSign.MyAction.execute(MyAction.java:28) 
     at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) 
     at com.montran.security.SecureRequestProcessor.processActionPerform(SecureRequestProcessor.java:707) 
     at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) 
     at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) 
     at com.montran.main.action.InheritanceActionServet.process(InheritanceActionServet.java:332) 
     at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
     at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
     at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
     at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) 
     at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
     at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
     at com.my.security.ActivityLoggingFilter.doFilter(ActivityLoggingFilter.java:88) 
     at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
     at com.my.security.AuthenticationFilter.doFilter(AuthenticationFilter.java:179) 
     at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
     at com.my.security.InjectionFilter.filter(InjectionFilter.java:453) 
     at com.my.security.InjectionFilter.doFilter(InjectionFilter.java:360) 
     at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
     at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730) 
     at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696) 
     at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
     at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
     at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273) 
     at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179) 
     at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490) 
     at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) 
     at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) 
Caused by: javax.xml.ws.WebServiceException: Error creating JAXBContext for W3CEndpointReference. 
     at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:237) 
     at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:232) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at com.sun.xml.ws.spi.ProviderImpl.getEPRJaxbContext(ProviderImpl.java:232) 
     at com.sun.xml.ws.spi.ProviderImpl.<clinit>(ProviderImpl.java:95) 
     ... 44 more 
Caused by: javax.xml.bind.JAXBException 
- with linked exception: 
[com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions 
org.w3c.dom.Element is an interface, and JAXB can't handle interfaces. 
     this problem is related to the following location: 
       at org.w3c.dom.Element 
       at public java.util.List com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements.elements 
       at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements 
       at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements com.sun.xml.ws.developer.MemberSubmissionEndpointReference.referenceProperties 
       at com.sun.xml.ws.developer.MemberSubmissionEndpointReference 
] 
     at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:263) 
     at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:235) 
     at javax.xml.bind.ContextFinder.find(ContextFinder.java:432) 
     at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:637) 
     at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584) 
     at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:235) 
     ... 48 more 
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions 
org.w3c.dom.Element is an interface, and JAXB can't handle interfaces. 
     this problem is related to the following location: 
       at org.w3c.dom.Element 
       at public java.util.List com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements.elements 
       at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements 
       at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements com.sun.xml.ws.developer.MemberSubmissionEndpointReference.referenceProperties 
       at com.sun.xml.ws.developer.MemberSubmissionEndpointReference 

     at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:106) 
     at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:466) 
     at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:298) 
     at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:141) 
     at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1163) 
     at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:145) 
     at sun.reflect.GeneratedMethodAccessor122.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:248) 
     ... 53 more 
+0

可能な重複[のWebLogicのclientgenは、WebLogicから動作しません] (http://stackoverflow.com/questions/11283489/weblogic-clientgen-doesnt-work-from-weblogic) – Frank

+0

右フランク、それは同様の問題です。どのような依存関係のクリーンアップが必要ですか、私はまだ解決策を得ていません。 –

答えて

1

これはクラスローディングプロセスを逆転につながる言及したファイル

<prefer-web-inf-classes>true</prefer-web-inf-classes> 

に以下を追加します。だから、あなたの戦争で提供するクラスは、weblogicのクラスの前にロードされます。

EDIT:

プロバイダのドキュメントは言う:

使用するプロバイダのサブクラスを見つけるために使用されるアルゴリズムは 次のステップで構成されます

  • リソースの場合META-INF/services/javax.xml.ws.spi.Providerの名前が存在する場合は、最初に
    行、存在する場合は、
    実装クラスのUTF-8エンコードされた名前として使用されます。
  • $ java.home/lib/jaxws.propertiesファイルが存在し、それがjava.util.Properties.load(InputStream)メソッドによって読み取られ、
    にキーがjavax.xml.wsのエントリが含まれている場合。 spi.Providerの場合、そのエントリの値
    が実装クラスの名前として使用されます。
  • 名前がjavax.xml.ws.spi.Providerのシステムプロパティが定義されている場合、その値は実装の名前として
    クラスとして使用されます。
  • 最後に、デフォルトの実装クラス名が使用されます。クラスロードを変更する場合

ので、十分に追加されていない以下の

<prefer-application-resources> 
    <resource-name>META-INF/services/javax.xml.ws.spi.Provider</resource-name> 
</prefer-application-resources> 

のweblogic-application.xmlにする

+0

すでに存在します。 –

+0

私の回答がProvider-API-doc – Frank

+0

のヒントで更新されました。機能していません。 –

関連する問題