We are using CXF for a shop backend. After we upgraded from 2.0.2 -> 2.0.4 the 
unit tests (TestNG) for the CXF services all fail with the same exception like 
the one below:

FAILED: testSaveCustomer
javax.xml.ws.soap.SOAPFaultException: Could not send Message.
        at 
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:175)
        at $Proxy78.saveCustomer(Unknown Source)
        at 
com.ewerk.shop.backend.wsapi.customer.CustomerServiceTest.testSaveCustomer(CustomerServiceTest.java:246)
Caused by: org.apache.cxf.interceptor.Fault: Could not send Message.
        at 
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
        at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:208)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:276)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:222)
        at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
        at 
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
        ... 24 more
Caused by: java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:168)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
        at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687)
        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632)
        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:652)
        at 
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1000)
        at 
java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:373)
        at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1863)
        at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1791)
        at 
org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
        at 
org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:157)
        at 
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
        at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:575)
        at 
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
        ... 29 more

The services STILL just work fine from the backend system (a webapp), only the 
tests fail.

----------------------------------------------------------------------------------------------------------------------------------------------------------

The unit test setup is the following:

Maven dependencies: cxf-rt-frontend-jaxws, cxf-rt-transports-http (2.0.4)

<SNIP Service interface>

        @WebService( name = "CustomerService" )
        public interface ICustomerService       
        {
                @WebMethod( operationName = "saveCustomer" )
                @WebResult( name = "saveCustomerResult" )
                public BackendServiceStatus saveCustomer( @WebParam( name = 
"auth" ) ServiceAuthentication auth,
                                                                        
@WebParam( name = "customer" ) Customer customer );
        }

</SNIP>


<SNIP CXF Server>

        JaxWsServerFactoryBean sf = new JaxWsServerFactoryBean ();
        sf.setServiceClass( ICustomerService.class ); 
        sf.setServiceBean( getServiceImplementation() ); --> returns the 
service impl bean from spring context ('CustomerServiceImpl')
        sf.setAddress( 
"http://localhost:8080/Shop_Backend/wsapi/CustomerService"; );

        // additionally setup JAXB context

        Server server = sf.create();

</SNIP>

<SNIP CXF Client>

        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setServiceClass( ICustomerService.class );
        factory.setAddress( 
"http://localhost:8080/Shop_Backend/wsapi/CustomerService"; );
        ICustomerService client = (ICustomerService)factory.create();

        // call service
        BackendServiceStatus status = customerServiceProxy.saveCustomer( auth, 
customer );

</SNIP>

<SNIP spring context>

        <bean id="CustomerServiceImpl" 
class="com.ewerk.shop.backend.wsapi.customer.CustomerServiceImpl" />
        <jaxws:server   id="CustomerService"
                                serviceBean="#CustomerServiceImpl" 
                                address="/CustomerService">
        </jaxws:server>
</SNIP>

----------------------------------------------------------------------------------------------------------------------------------------------------------

Any solution is really appreciated. Thanks in advance.

Mit lieben Grüßen aus dem eWerk

  |  Holger Stolzenberg
  |  Softwareentwickler
  |
  |  Geschäftsführer: 
  |  Frank Richter, Erik Wende, Hendrik Schubert
  |
  |  eWerk IT GmbH
  |  Markt 16
  |  Leipzig 04109
  |  http://www.ewerk.com
  |  HRB 9065, AG Leipzig
  |  Hauptniederlassung Leipzig
  |
  |  fon +49.341.4 26 49-0
  |  fax +49.341.4 26 49-88
  |  mailto:[EMAIL PROTECTED]
  |
  |  Support:
  |  fon 0700 CALLME24 (0700 22556324)
  |  fax 0700 CALLME24 (0700 22556324)
  |
  | Auskünfte und Angebote per Mail
  | sind freibleibend und unverbindlich. 

Reply via email to