Bizzare host re-write in JAX-WS client on JB7.0.2
benze Jun 7, 2012 10:32 AMHi,
I've run into a strange issue with JB7.0.2.FINAL with a JAX-WS client that is getting its destination address rewritten. The issue is not unsimilar to https://community.jboss.org/thread/164507?tstart=0 or https://issues.jboss.org/browse/JBWS-3260. I don't know if this is a bug or rather if it is a configuration problem on my side.
I have created a JAX-WS WebService which encompases a client to communicate with another webservice. When my WS first calls the client, I see the following in my log file and the client connects without problems.
{code}
14:44:11,500 INFO [org.apache.cxf.service.factory.ReflectionServiceFactoryBean] (http--0.0.0.0-8080-1) Creating Service {http://www.mydom.ca/AgmtProdOpers/LoanAgreementMgmt/V1}LoanAgreementMgmtHttpService from WSDL: http://server1.npr.local/tu/LoanAgreementMgmt/V1?wsdl
14:44:15,377 INFO [org.jboss.wsf.stack.cxf.transport.AddressRewritingEndpointInfo] (http--0.0.0.0-8080-1) Setting new service endpoint address in wsdl: http://10.68.30.25:80/tu/LoanAgreementMgmt/V1
14:44:16,186 INFO [org.apache.cxf.service.factory.ReflectionServiceFactoryBean] (http--0.0.0.0-8080-1) Creating Service {http://www.mydom.ca/AgmtProdOpers/LoanAgreementMgmt/V1}LoanAgreementMgmtHttpService from WSDL: http://server1.npr.local/tu/LoanAgreementMgmt/V1?wsdl
14:44:16,195 INFO [org.jboss.wsf.stack.cxf.transport.AddressRewritingEndpointInfo] (http--0.0.0.0-8080-1) Setting new service endpoint address in wsdl: http://10.68.30.25:80/tu/LoanAgreementMgmt/V1
14:44:16,252 INFO [org.jboss.wsf.stack.cxf.transport.AddressRewritingEndpointInfo] (http--0.0.0.0-8080-1) Setting new service endpoint address in wsdl: http://localhost:8080/tu/LoanAgreementMgmt/V1
{code}
However, the second (and subsequent) times I call the same client, I get the following in my logs and the client fails to connect:
{code}
14:44:26,893 INFO [org.apache.cxf.service.factory.ReflectionServiceFactoryBean] (http--0.0.0.0-8080-1) Creating Service {http://www.mydom.ca/AgmtProdOpers/LoanAgreementMgmt/V1}LoanAgreementMgmtHttpService from WSDL: http://server1.npr.local/tu/LoanAgreementMgmt/V1?wsdl
14:44:26,903 INFO [org.jboss.wsf.stack.cxf.transport.AddressRewritingEndpointInfo] (http--0.0.0.0-8080-1) Setting new service endpoint address in wsdl: http://localhost:8080/tu/LoanAgreementMgmt/V1
14:44:27,570 INFO [org.apache.cxf.service.factory.ReflectionServiceFactoryBean] (http--0.0.0.0-8080-1) Creating Service {http://www.mydom.ca/AgmtProdOpers/LoanAgreementMgmt/V1}LoanAgreementMgmtHttpService from WSDL: http://server1.npr.local/tu/LoanAgreementMgmt/V1?wsdl
14:44:27,579 INFO [org.jboss.wsf.stack.cxf.transport.AddressRewritingEndpointInfo] (http--0.0.0.0-8080-1) Setting new service endpoint address in wsdl: http://localhost:8080/tu/LoanAgreementMgmt/V1
14:44:27,625 INFO [org.jboss.wsf.stack.cxf.transport.AddressRewritingEndpointInfo] (http--0.0.0.0-8080-1) Setting new service endpoint address in wsdl: http://localhost:8080/tu/LoanAgreementMgmt/V1
...
...
...
Caused by: org.apache.cxf.transport.http.HTTPException: HTTP response '404: Not Found' when communicating with http://localhost:8080/tu/LoanAgreementMgmt/V1
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1554)
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)
{code}
This time around, the client tries to connect to localhost:8080 which is obviously not the correct address/port for the destination service.
If I edit the standalone-preview.xml file and change the default setting
{code}
<subsystem xmlns="urn:jboss:domain:webservices:1.0" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:jaxwsconfig="urn:jboss:jbossws-jaxws-config:4.0">
<wsdl-host>
localhost
</wsdl-host>
<modify-wsdl-address>
true
</modify-wsdl-address>
...
...
{code}
to
{code}
<subsystem xmlns="urn:jboss:domain:webservices:1.0" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:jaxwsconfig="urn:jboss:jbossws-jaxws-config:4.0">
<wsdl-host>
localhost
</wsdl-host>
<modify-wsdl-address>
false
</modify-wsdl-address>
...
...
{code}
then everything works as expected.
{code}
15:39:45,129 INFO [org.apache.cxf.service.factory.ReflectionServiceFactoryBean] (http-0.0.0.0-0.0.0.0-8080-1) Creating Service {http://www.mydom.ca/AgmtProdOpers/LoanAgreementMgmt/V1}LoanAgreementMgmtHttpService from WSDL: http://server1.npr.local/tu/LoanAgreementMgmt/V1?wsdl
15:39:45,139 INFO [org.jboss.wsf.stack.cxf.transport.AddressRewritingEndpointInfo] (http-0.0.0.0-0.0.0.0-8080-1) Setting new service endpoint address in wsdl: http://10.68.30.25:80/tu/LoanAgreementMgmt/V1
15:39:45,627 INFO [org.apache.cxf.service.factory.ReflectionServiceFactoryBean] (http-0.0.0.0-0.0.0.0-8080-1) Creating Service {http://www.mydom.ca/AgmtProdOpers/LoanAgreementMgmt/V1}LoanAgreementMgmtHttpService from WSDL: http://server1.npr.local/tu/LoanAgreementMgmt/V1?wsdl
15:39:45,637 INFO [org.jboss.wsf.stack.cxf.transport.AddressRewritingEndpointInfo] (http-0.0.0.0-0.0.0.0-8080-1) Setting new service endpoint address in wsdl: http://10.68.30.25:80/tu/LoanAgreementMgmt/V1
{code}
Is this a configuration issue on my side, or is this still a trailing bug from the CXF stack (see above jira link)?
Thanks,
Eric