我如何可以调用web服务从其他Web服务

我有两个Web服务A和B. A需要调用在B中的webMethods我​​怎样才能做到这一点的呢? 我使用Maven的插件的wsimport打造A.这是产生B所存根和它们作为web服务A.部分然而,当我尝试调用B的的WebMethod,我得到一个异常。 谁能告诉我是怎么回事? 下面是代码和异常跟踪:代码:

BBeanService bbs = new BBeanService(); BBean bb = bbs.getBBeanPort(); bb.invokeWebService(); // this is throwing exception

这是异常跟踪:
在显示java.lang.NullPointerException com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:188)在com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:116)的融为一体。 sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:119)在com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)在了com.sun.xml。 ws.client.sei.SEIStub.invoke(SEIStub.java:118)在$ Proxy175.getCase(来源不明)在 com.kebok.ais.billing.server.ejb.impl.ChargeManagerBean.generateBillDetails(ChargeManagerBean.java:144) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)在java.lang.reflect.Method中.invoke(Method.java:597)在com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1011)在com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:175)在com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:2920)在com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4011)在com.sun.ejb.containers.WebServiceInvocationHandler.invoke( WebServiceInvocationHandler.java:190)在$ Proxy173.generateBillDetails(来源不明)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)在sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)在java.lang.reflect.Method.invoke(Method.java:597)在com.sun.enterprise.webservice.InvokerImpl.invoke(InvokerImpl.java:78)在com.sun.enterprise。 webservice.EjbInvokerImpl.invoke(EjbInvokerImpl.java:82)在com.sun.xml.ws.server.InvokerTube $ 2.invoke(InvokerTube.java:146)在com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke (EndpointMethodHandler.java:257)在com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93)在com.sun.xml.ws.api.pi​​pe.Fiber .__ doRun(Fiber.java :595)在com.sun.xml.ws.api.pipe.Fiber doRun(Fiber.java:554)在com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539)的com.sun.xml.ws.api.pipe.Fiber.runSync在COM(Fiber.java:436)在com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:106)。 sun.enterprise.webservice.MonitoringPipe.process(MonitoringPipe.java:147)在com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)在com.sun.xml.ws. api.pipe.Fiber。_doRun(Fiber.java:595)com.sun.xml.ws.api.pipe.Fiber。doRun(Fiber.java:554)在com.sun.xml.ws.api.pipe。 Fiber.doRun在com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl(Fiber.java:539)在com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)。流程(AbstractTubeImpl.java:106)在com.sun.xml.ws.tx.service.TxServerPipe.process(TxServerPipe.java:317)在 com.sun.enterprise.webservice.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:222) 在com.sun.enterprise.webservice.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:133)在com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)在了com.sun.xml .ws.api.pipe.Fiber。_doRun(Fiber.java:595)com.sun.xml.ws.api.pipe.Fiber。doRun(Fiber.java:554)在com.sun.xml.ws.api .pipe.Fiber.doRun(Fiber.java:539)在com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)在com.sun.xml.ws.server.WSEndpointImpl $ 2流程(WSEndpointImpl.java:243)在com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle(HttpAdapter.java:444)在com.sun.xml.ws.transport.http.HttpAdapter.handle( HttpAdapter.java:244)在com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)在com.sun.enterprise.webservice.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:113)在com.sun.enterprise.webservice.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:87)在 com.sun.enterprise.webservice.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:228) 在com.sun.enterprise.webservice.EjbWebServiceServlet.service(EjbWebServiceServlet.java:157)在javax.servlet.http.HttpServlet.service(HttpServlet.java:847)在com.sun.enterprise.web.AdHocContextValve.invoke(AdHocContextValve的.java:114)在org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)在org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)在org.apache.catalina。 core.StandardPipeline.invoke(StandardPipeline.java:587)在com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:87)在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)在org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)在org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)在org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:587)在org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)的org.apache。 catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)在org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)在org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java: 587)在org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)在org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:288)在 com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:647) com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:579) 在com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:831)在 com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341) 在com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)在com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)在 com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:380) 在com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)在com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)产生的原因:javax.xml.ws.WebServiceException:显示java.lang.NullPointerException在com.sun.enterprise.security.jmac.config.PipeHelper.makeFaultResponse(PipeHelper.java:328)在com.sun.enterprise.security.jmac.config。 PipeHelper.getFaultResponse(PipeHelper.java:366)在 com.sun.enterprise.webservice.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:227) 在com.sun.enterprise.webservice.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:133)在com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)在了com.sun.xml .ws.api.pipe.Fiber。_doRun(Fiber.java:595)在com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554)在com.sun.xml.ws.api .pipe.Fiber.doRun(Fiber.java:539)在com.sun.xml.ws.api.pi​​pe.Fiber.runSync(Fiber.java:436)在com.sun.xml.ws.server.WSEndpointImpl $ 2流程(WSEndpointImpl.java:243)在com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle(HttpAdapter.java:444)在com.sun.xml.ws.transport.http.HttpAdapter.handle( HttpAdapter.java:244)在com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)在com.sun.enterprise.webservice.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:113)在com.sun.enterprise.webservice.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:87)在 com.sun.enterprise.webservice.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:228) 在com.sun.enterprise.webservice.EjbWebServiceServlet.service(EjbWebServiceServlet.java:157)在javax.servlet.http.HttpServlet.service(HttpServlet.java:847)在com.sun.enterprise.web.AdHocContextValve.invoke(AdHocContextValve的.java:114)在org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)在org.apache.catalina。

--------------解决方案-------------

我也是,我已经得到了相同的probleme,但我已经解决了它是这样的: 如果你使用NetBeans:

  1. 创建一个项目:网络 - > web应用 - >等
  2. 你应该创建一个你要调用Web服务的客户端。 该梅索德是:右键单击您的项目---> Web服务客户端。 你应该给你的WSDL的URL和Netbeans它将分析这个WSDL并创建客户端。
  3. 创建你的第二个Web服务(Web服务将调用第一个)在同一封装中。 中庸之道右键点击你的项目---> Web服务。
  4. 这部分是您probleme请在您的项目,但与另一个软件包名称创建一个简单的标准Java类中最重要的 。 你外面的默认构造函数创建一个默认的构造函数(可选,但好),创建你给的名字TestService的(这是名称的简单为例)的内部功能的功能,点击右键,选择:插入代码--->调用Web服务操作。 如果任何人认为是OK,你必须看到服务从要调用它的操作的其他Web服务来了。(这一点,因为你已经在步骤2中创建的客户端),选择您要呼叫的操作。
  5. 在你的web服务,你现在可以叫你TestService的操作标准Java操作(实例化类,使用调用操作“。”表示法)
  6. 这是你所需要的一切。 请让我通知你的进步......如果你对此有任何其他的问题,我们可以分享的信息,直到你获得成功......好吗? 我认为最好的办法是,如果你想使用WebServices的合作,使用NetBeans。 勇气和对我的英语对不起....我是一个frensh speeker。

好吧,我终于得到了它的工作。 我所要做的就是annonate我调用方法(在这种情况下invokeService()在WebService的BB与“@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)”,并将其所有的作品顺利。我不太清楚这背后的原因。任何人?

分类:网页服务 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.259 (s). 10 q(s)