2012-03-19 16 views
2

私は問題なくFelixで実行していたOSGIバンドルをいくつか作成しました。 jaxwsサービスへの呼び出しを呼び出すバンドルがあります。 osgiバンドルのすべてのスタブは、cxf-codegen-pluginを使用して生成されました。起動時にfelixを直接起動してアプリケーションを実行すると、すべて正常に動作します。jax-wsサービスを呼び出すjboss内からOSGIを実行

私は最近、これをjbossアプリケーションサーバー(JBoss 5.1.0.GA)の中で実行しているものに移動しました。 servlet-bridgeを使用していて、自分のサーブレットが登録されているときにfelixを起動しています。すべてが見つかるようになり、バンドルはすべてエラーなく開始されます。私は自分のアプリケーションを実行するときしかし、私は次のエラーを取得する:

22:23:40,688 ERROR [[proxy]] Servlet.service() for servlet proxy threw exception 
javassist.NotFoundException: com.service.ws.Parameters 
at javassist.ClassPool.get(ClassPool.java:436) 
at org.jboss.ws.core.jaxws.DynamicWrapperGenerator.addProperty(DynamicWrapperGenerator.java:226) 
at org.jboss.ws.core.jaxws.DynamicWrapperGenerator.generate(DynamicWrapperGenerator.java:122) 
at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilder.processWebMethod(JAXWSMetaDataBuilder.java:796) 
at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilder.processWebMethods(JAXWSMetaDataBuilder.java:920) 
at org.jboss.ws.metadata.builder.jaxws.JAXWSClientMetaDataBuilder.rebuildEndpointMetaData(JAXWSClientMetaDataBuilder.java:298) 
at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPortInternal(ServiceDelegateImpl.java:269) 
at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPort(ServiceDelegateImpl.java:200) 
at javax.xml.ws.Service.getPort(Service.java:99) 
at com.service.ws.JasperService_Service.getJasperServicePort(JasperService_Service.java:46) 
at com.service.ws.JasperReportImpl.initializeServer(JasperReportImpl.java:56) 
at com.web.ui.ReportWindow.handleParameters(ReportWindow.java:122) 
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:528) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:96) 
at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79) 
at org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42) 
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49) 
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) 
at org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48) 
at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39) 
at org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.felix.http.proxy.ProxyServlet.service(ProxyServlet.java:60) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) 
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) 
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) 
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
at java.lang.Thread.run(Thread.java:662) 

Javassistのクラスは、そのクラスを見つけることができない理由を私はよく分かりません。これは、getPortの呼び出しと同じバンドルの一部であり、felixから直接実行しているときは、このすべてがうまく動作します。

* UPDATE 私は、このようにグローバルクラスパス上に置くことは、JBoss libディレクトリに探されているクラスを含むjarファイル(バンドル)を入れた場合、私はこの最初のエラーを乗り越えることができます。私はその初期の解像度エラーを乗り越えるたら、次のようにしかし、私はその後、別のエラーが表示されます。だから、何かがクラスパスにめちゃくちゃにされ

22:05:10,823 ERROR [ServiceDelegateImpl] Cannot create proxy for SEI com.service.ws.JasperService from: file:/home/work/appservers/osgi/bundle/com.jasper-server-ws-client-1.0-SNAPSHOT.jar 
22:05:10,824 ERROR [[proxy]] Servlet.service() for servlet proxy threw exception 
java.lang.IllegalArgumentException: interface com.service.ws.JasperService is not visible from class loader 
at java.lang.reflect.Proxy.getProxyClass(Proxy.java:353) 
at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581) 
at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.createProxy(ServiceDelegateImpl.java:400) 
at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPortInternal(ServiceDelegateImpl.java:273) 
at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPort(ServiceDelegateImpl.java:200) 
at javax.xml.ws.Service.getPort(Service.java:99) 

を。理由は分かりませんが、バンドルのクラスパスが何らかの形で間違っているように見えますが、どこにいるのかわかりません。

答えて

0

最初の更新で発生したような現在の問題は、Java reflectionのいずれかです。

ここでの秘密は、ファイルを更新して、com.service.ws.JasperServiceをクラスローダーに公開することです。プロジェクトと

Export-Package: com.service.ws.JasperService

運のベスト:this guideに続き、あなたのような何かを試してみてください。

関連する問題