2012-03-19 18 views
2

我创建了一些我在Felix中运行的OSGI包,没有任何问题。我有一个调用jaxws服务的调用。所有osgi包的存根都是使用cxf-codegen-plugin生成的。一切正常,如果我直接启动felix并执行我的应用程序。从jboss中运行OSGI调用jax-ws服务

我最近把它移到了让jboss应用服务器(JBoss 5.1.0.GA)运行的所有东西。我正在使用servlet-bridge,并且在我的servlet注册时启动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之一。

这里的秘诀是更新您的MANIFEST.MF文件以将com.service.ws.JasperService暴露给类加载器。继this guide,你可以尝试这样的:

Export-Package: com.service.ws.JasperService

祝您好运与您的项目。