Dan, I'm seeing the exact same behavior (values null when received by client) using the wsdl2java generated client and jax:ws endpoints.
-bh On 7/27/07, Dan Diephouse <[EMAIL PROTECTED]> wrote: > > Hi Holger, > > I'm going to take a stab in the dark and say its because you're using the > ClientProxyFactoryBean with the JaxWsServerFactoryBean. You should either > be > sure to use the JaxWsProxyFactoryBean with the JaxWsServerFactoryBean OR > use > the ServerFactoryBean with the ClientProxyFactoryBean. Hope that helps, > - Dan > > On 7/25/07, Holger Stolzenberg <[EMAIL PROTECTED]> wrote: > > > > 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!!! > > > > > > -- > Dan Diephouse > Envoi Solutions > http://envoisolutions.com | http://netzooid.com/blog >