CXF Webservice 服务器调用 Axis1 Webservice 作为客户端问题(无法找到有效的 EngineConfigurationFactory)

Posted

技术标签:

【中文标题】CXF Webservice 服务器调用 Axis1 Webservice 作为客户端问题(无法找到有效的 EngineConfigurationFactory)【英文标题】:CXF Webservice server calling Axis1 webservice as client Problem (Unable to locate a valid EngineConfigurationFactory) 【发布时间】:2011-08-11 20:43:01 【问题描述】:

我有一个 CXF 网络服务服务器作为客户端调用 Axis1 网络服务并收到以下错误:

“无法找到有效的EngineConfigurationFactory”,然后,空指针异常

我正在使用 Jboss4。

在同一个应用中使用axis1和cxf有什么问题吗?

跟踪堆栈跟踪

10:25:04,263 INFO [STDOUT] 10:25:04,263 WARN [EngineConfigurationFactoryFinder] 工厂 org.apache.axis.configuration.EngineConfigurationFactoryServlet 已忽略:缺少必需的方法:公共静态 EngineConfigurationFactory newFactory(Object)。 10:25:04,264 INFO [STDOUT] 10:25:04,264 WARN [EngineConfigurationFactoryFinder] 工厂 org.apache.axis.configuration.EngineConfigurationFactoryDe​​fault 忽略:缺少必需的方法:公共静态 EngineConfigurationFactory newFactory(对象)。 10:25:04,264 INFO [STDOUT] 10:25:04,264 错误 [EngineConfigurationFactoryFinder] 无法找到有效的 EngineConfigurationFactory 10:25:04,270 信息 [标准输出] 10:25:04,270 信息 [serviceauthenticatorImpl] java.lang.NullPointerException 在 org.apache.axis.client.Service.getEngineConfiguration(Service.java:813) 在 org.apache.axis.client.Service.getAxisClient(Service.java:104) 在 org.apache.axis.client.Service.(Service.java:113) 在 ServiceAuthenticator_pkg.ServiceAuthenticatorServiceLocator.(ServiceAuthenticatorServiceLocator.java:12) 在 br.com.druid.zanfa.serviceauthenticator.impl.serviceauthenticatorImpl.executa(serviceauthenticatorImpl.java:58) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173) 在 org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89) 在 org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75) 在 org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在 org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) 在 org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106) 在 org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) 在 org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113) 在 org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97) 在 org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461) 在 org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188) 在 org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148) 在 org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179) 在 org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 在 org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 在 org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) 在 org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 在 org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 在 java.lang.Thread.run(Thread.java:619)

提前致谢

【问题讨论】:

【参考方案1】:

爆炸与CXF无关。 Axis 在其客户端库中爆炸式增长。您应该能够将其隔离到其中没有 CXF 的测试用例中。

但是,获得 Axis1 的帮助来解决问题可能并不容易。计划阅读源代码。

【讨论】:

您好,感谢您的回复。我已经使用 EJB 划分了我的项目,并且一切都自动运行。我认为与 CXF 和 AXIS1 一起工作存在问题。我会进一步研究并在这里更新结果。

以上是关于CXF Webservice 服务器调用 Axis1 Webservice 作为客户端问题(无法找到有效的 EngineConfigurationFactory)的主要内容,如果未能解决你的问题,请参考以下文章

cxf 入门

现在java调用webservice是用啥技术?

我第一次接触webservice,怎么调用用web service接口,cxf或者axis2都行,网上找的例子,都有点错误

cxf快速简单的实现webservice调用

webservice发布服务:CXF及客户端调用

axis2调用webservice教训