I have the following bug that where I cannnot figure out where the problem is. I have a Web Service with the following definition:
=========== INTERFACE ============ @WebService( name = "SubscriptionService" ) public interface ISubscriptionService extends IBackendService { @WebMethod( operationName = "getSubscriptionById" ) @WebResult( name = "getSubscriptionByIdResult" ) public Subscription getSubscriptionById( @WebParam( name = "auth" ) ServiceAuthentication auth, @WebParam( name = "subscriptionId" ) int subscriptionId ) throws BackendServiceException; } =========== IMPL =========== @WebService( serviceName = "SubscriptionService", endpointInterface = "ISubscriptionService" ) public class SubscriptionServiceImpl extends BackendServiceImpl implements ISubscriptionService { public Subscription getSubscriptionById( ServiceAuthentication auth, int subscriptionId ) throws SubscriptionServiceException { try { // here we use a Spring transaction proxy (Hibernate, TransactionManager, TransactionDemarcation ...) ISubscriptionDaoProxy proxy = (ISubscriptionDaoProxy) getDaoProxyProvider().getDaoProxy( ISubscriptionDaoProxy.class ); Subscription subscription = proxy.getSubscriptionById( subscriptionId ); return subscription; <<<<<<<<<<<<<<<<< If I set a breakPoint here in my TestNG Test, I can see a valid object was loaded and returned } catch ( Exception e ) { ... } } } The web service itself is declared as spring bean (excerpt): <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://cxf.apache.org/jaxws classpath:/schemas/jaxws.xsd"> <!-- Load Celtixfire configuration stuff --> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-*.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> ... all needed beans defined here ... <!-- Subscription service --> <bean id="SubscriptionServiceImpl" class="com.ewerk.eex.shop.backend.wsapi.subscription.SubscriptionService Impl"> <property name="daoProxyProvider" ref="DaoProxyProvider"/> <property name="eventModule" ref="EventModule"/> <property name="serviceAuthenticationValidator" ref="ServiceAuthenticationValidator"/> </bean> <jaxws:endpoint id="SubscriptionService" address="/SubscriptionService"> <jaxws:implementor> <ref bean="SubscriptionServiceImpl" /> </jaxws:implementor> </jaxws:endpoint> </beans> Everything is working fine, the Tomcat starts up without problems and I can access the WSDL of the service. I also can call the service via a PHP client and a fully initialized Subscription object is returned. I also have an TestNG test class that test the service. Here lies the problem: =========== TEST CODE =========== @Test( groups = "ServiceTestGroup" ) public void testGetSubscriptionById() throws Exception { // start server JaxWsServerFactoryBean sf = new JaxWsServerFactoryBean (); sf.setBus( bus ); sf.setServiceClass( ISubscriptionService.class ); sf.setServiceBean( impl ); <<<<< gets injected from spring context sf.setAddress( "http://localhost:8080/SubscriptionService" ); sf.getServiceFactory().setDataBinding( new AegisDatabinding() ); sf.create(); // create client ClientProxyFactoryBean factory = new ClientProxyFactoryBean(); factory.setBus( bus ); factory.setServiceClass( ISubscriptionService.class ); factory.setAddress( "http://localhost:8080/SubscriptionService" ); factory.getServiceFactory().setDataBinding( new AegisDatabinding() ); ISubscriptionService client = (ISubscriptionService)factory.create(); int testId = IBackendTestConstants.TEST_SUBSCRIPTION_ID; Subscription loaededSubscription = client.getSubscriptionById( getServiceAuthentication(), testId ); <<<<< when invoked I can see a valid Subscription object loaded at the breakpoint in the impl class BUT assert ( subscription != null ) : "Subscription is null"; assert ( subscription.getId() == testId ) : "Ids are not matching"; <<<<<< This assert fails because the local variable 'loadedSubscription' is only PARTIALLY initialized. Every field is null except fields that are foreing key references. Subscription.class bean is not only the return value of the web service, it is also an annotated hibernate mapping bean. } Can anyone tell my why the object returned from the client has uninitialized fields ???? I know that this problem report is pretty long but I did not know how to clarify the problem in another way. Any help is really appreciated. Thanks a lot!!!