简体   繁体   English

jboss连接到另一个wsdl Web服务

[英]jboss connect to another wsdl webservice

I builded a jboss webservice few month ago. 我几个月前建立了一个jboss网络服务。 This service work perfectly for the need of the moment. 此服务非常适合当前需要。

Now, the client ask me to add some feature which is basicly connect to another different webservice to speed up follow up time. 现在,客户要求我添加一些功能,该功能基本上可以连接到另一个不同的Web服务,以加快跟进时间。 (basicly a jboss webservice have to connect another webserver somewhere on the network) (基本上,一个jboss网络服务必须在网络上的某个地方连接另一个网络服务器)

I have already a java code that I code for connect to this remote webservice(work well using JDK out of a Webservice... but just stacktrace in JBOSS context) 我已经有一个用于连接到此远程Web服务的Java代码(使用Web服务中的JDK可以很好地工作...但是只需在JBOSS上下文中使用stacktrace)

    public SOAPMessage callDownloadInterfaceWS(String processName, SOAPMessage soapRequest) throws Exception {
    SOAPMessage response = null;

    if (soapRequest == null)
        throw new Exception("Empty request");

    //FactoryLogger.log("Create the dynamic invocation object from this service...");
    Dispatch<SOAPMessage> dispatch = soapService.createDispatch(port, SOAPMessage.class, Service.Mode.MESSAGE);

    if (username != null) {
        //login pass
        dispatch.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, username);
        dispatch.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password);
    }

    if (soapaction != null) {
        dispatch.getRequestContext().put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
        dispatch.getRequestContext().put(BindingProvider.SOAPACTION_URI_PROPERTY, soapaction);
    }

    dispatch.getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);

    if (processName != null) {
        LOG.info("[" + processName + "] Invoke the service endpoint: " + wsdl);
    } else {
        LOG.info("Invoke the service endpoint: " + wsdl);
    }
    response = dispatch.invoke(soapRequest);
    return response;
}

I tried to find some example of this on the web without success. 我试图在网上找到一些例子,但没有成功。 So this is the trace log of Jboss: 因此,这是Jboss的跟踪日志:

12:25:50,380 INFO  [org.apache.cxf.service.factory.ReflectionServiceFactoryBean] (http--0.0.0.0-8088-1) Creating Service {http://cx.blabla.com/cbserver}ServiceManager from class org.apache.cxf.jaxws.support.DummyImpl
12:25:50,382 INFO  [com.assistcenter.intercom.gateway.soap.SoapConnector] (http--0.0.0.0-8088-1) [cx_v6_sortie:B002054035] Invoke the service endpoint: http://dcobyb:12770/cbserver/Service/cbevent.wsdl
12:25:50,396 WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (http--0.0.0.0-8088-1) Interceptor for {http://cx.blabla.com/cbserver}ServiceName#{http://cxf.apache.org/jaxws/dispatch}Invoke has thrown exception, unwinding now: org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
        at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:237)
        at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:60)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
        at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:795)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1626)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1493)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1401)
        at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
        at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:648)
        at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
        at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:461)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:364)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:317)
        at org.apache.cxf.endpoint.ClientImpl.invokeWrapped(ClientImpl.java:352)
        at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:381)
        at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:241)
        at com.assistcenter.intercom.gateway.soap.SoapConnector.callDownloadInterfaceWS(SoapConnector.java:144) [classes:]
        at com.bell.it.bip.util.SmSoap.serviceManagerEventIn(SmSoap.java:45) [classes:]
        at com.bell.ws.bnl.api.soap.BnlServiceManagerSoapHandler.sendServiceManagerEventIn(BnlServiceManagerSoapHandler.java:88) [classes:]
        at com.bell.ws.bnl.api.impl.BnlServiceManagerImpl.updatePaymentConfig(BnlServiceManagerImpl.java:184) [classes:]
        at com.bell.ws.bnl.xswitch.method.UpdatePaymentConfigMethod.execute(UpdatePaymentConfigMethod.java:49) [classes:]
        at com.bell.ws.bnl.xswitch.method.UpdatePaymentConfigMethod.execute(UpdatePaymentConfigMethod.java:30) [classes:]
        at com.bell.ws.bnl.xswitch.WebServiceMethodExecutor.execute(WebServiceMethodExecutor.java:29) [classes:]
        at com.bell.ws.bnl.xswitch.servlet.BnlSoapBinding.updatePaymentConfig(BnlSoapBinding.java:132) [classes:]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_25]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_25]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_25]
        at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_25]
        at org.jboss.ws.common.invocation.AbstractInvocationHandlerJSE.invoke(AbstractInvocationHandlerJSE.java:111)
        at org.jboss.wsf.stack.cxf.JBossWSInvoker._invokeInternal(JBossWSInvoker.java:181)
        at org.jboss.wsf.stack.cxf.JBossWSInvoker.invoke(JBossWSInvoker.java:127)
        at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [rt.jar:1.7.0_25]
        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) [rt.jar:1.7.0_25]
        at java.util.concurrent.FutureTask.run(Unknown Source) [rt.jar:1.7.0_25]
        at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
        at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
        at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
        at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:207)
        at org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:91)
        at org.jboss.wsf.stack.cxf.transport.ServletHelper.callRequestHandler(ServletHelper.java:169)
        at org.jboss.wsf.stack.cxf.CXFServletExt.invoke(CXFServletExt.java:87)
        at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:185)
        at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:108)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
        at org.jboss.wsf.stack.cxf.CXFServletExt.service(CXFServletExt.java:135)
        at org.jboss.wsf.spi.deployment.WSFServlet.service(WSFServlet.java:140) [jbossws-spi-2.0.3.GA.jar:2.0.3.GA]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
        at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
        at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_25]
Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
 at [row,col {unknown-source}]: [1,0]
        at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:677)
        at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2104)
        at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2010)
        at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1102)
        at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1125)
        at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:138)
        ... 63 more

From my understanding, he try to create a service as his own... when he should try to access it via the url on the other server. 据我了解,他尝试创建自己的服务...当他应尝试通过另一台服务器上的URL访问该服务时。 It's probably just a config to add somewhere for telling this call is on another server. 它可能只是在某个位置添加的配置,用于告诉此调用在另一台服务器上。 I have the a miminum configuration (no external jar out of those from jboss) and having just a web.xml. 我有一个最低限度的配置(没有来自jboss的外部jar),只有一个web.xml。

(web.xml)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <description>BnlService</description>
  <display-name>BnlService</display-name>
  <welcome-file-list>
    <welcome-file>
        index.html
    </welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>BnlService</servlet-name>
    <servlet-class>com.bell.ws.bnl.xswitch.servlet.BnlSoapBinding</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>BnlService</servlet-name>
    <url-pattern>/WebServices/BnlWS</url-pattern>
  </servlet-mapping>
  <session-config>
    <session-timeout>360</session-timeout>
  </session-config>
</web-app>

So I'm asking here for see if someone know how to set an external wsdl in Jboss 7.1.1.Final. 因此,我在这里询问是否有人知道如何在Jboss 7.1.1.Final中设置外部wsdl。

Added: This is the client trace when I run the same code under a jdk (not in jboss webservice): 补充:当我在jdk下运行相同的代码时(这不是在jboss webservice中),这是客户端跟踪:

C:\Program Files\Java\jdk1.6.0_20\bin\javaw.exe" -client -classpath K:\Bnl\classes;K:\Bnl\lib\commons-lang-2.3.jar;K:\Bnl\lib\commons-logging.jar;K:\Bnl\lib-oracle\ojdbc14.jar;K:\Bnl\lib-oracle\ojdbc6.jar;K:\Bnl\jboss7.1.1-lib\jbosgi-http-api-1.0.5.jar;K:\Bnl\lib-mail\javax.mail.jar com.bell.ws.bnl.api.impl.BnlServiceManagerImpl
2015-10-14 12:11:32 com.bell.ws.bnl.api.impl.BnlServiceManagerImpl updatePaymentConfig
INFO: updatePaymentConfig -  [TEST] Record Test,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
2015-10-14 12:11:32 com.bell.ws.bnl.api.soap.BnlServiceManagerSoapHandler readProperty
INFO: First init - Load config file: bnl-soap.config
2015-10-14 12:11:32 com.assistcenter.intercom.gateway.soap.SoapConnector <init>
INFO: Define the SOAP service...
2015-10-14 12:11:32 com.bell.it.bip.util.SmSoap serviceManagerEventIn
INFO: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pws="http://cx.blabla.com/cxserver" xmlns:com="http://cx.blabla.com/cxserver/Common">
   <soapenv:Header/>
   <soapenv:Body>
      <pws:EventProcessingRequest>
         <pws:event etype="event">
            <pws:type>cx_v6_sortie</pws:type>
            <pws:user>Bip</pws:user>
            <pws:record>Test^2^3^4^5^6^7^8^9^10^11^12^13^14^15^16^17^18^</pws:record>
         </pws:event>
      </pws:EventProcessingRequest>
   </soapenv:Body>
</soapenv:Envelope>
2015-10-14 12:11:32 com.assistcenter.intercom.gateway.soap.SoapConnector callDownloadInterfaceWS
INFO: [cx_v6_sortie:Test] Invoke the service endpoint: http://dcobyb:12770/cbserver/Service/cbevent.wsdl
Process exited with exit code 0.

This caused stack trace seems to be about the bad formed XML, and it is related to end of the file (EOF). 这导致堆栈跟踪似乎与格式错误的XML有关,并且与文件结尾(EOF)有关。

Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog

Try identify all the XML formed and whatch before send it, note that all the opened tags must be ended. 请尝试识别所有形成的XML,然后再发送,请注意,所有打开的标记必须结束。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM