OK... Hmm. Can you send along a test case/wsdl? That should help us debug on
our end and see if we can reproduce it.
- Dan
On 7/27/07, Brad Harper <[EMAIL PROTECTED]> wrote:
>
> 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
> >
>
--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog