Re: Problem deserializing pojos (fields not initialized)
Hello , your code works fine, and infact my tests are now green-like-grass. The only minor issue is that: AegisDatabinding.WRITE_XSI_TYPE_KEY is deprecated in the 2.1-SNAPSHOT release I've been using. What should I use instead ? On Tue, Apr 1, 2008 at 2:38 PM, Alpin, Luba [EMAIL PROTECTED] wrote: Following works good: Server: --- ServerFactoryBean svrFactory = new ServerFactoryBean(); HashMapString, Object props = new HashMapString, Object(); props.put(AegisDatabinding.WRITE_XSI_TYPE_KEY, true); ArrayListString l = new ArrayListString(); l.add(YourCustomClassName.class.getName()); props.put(AegisDatabinding.OVERRIDE_TYPES_KEY, l); svrFactory.setServiceClass(InterfaceClassName.class); svrFactory.setAddress(address); svrFactory.setServiceBean(InterfaceImpl); svrFactory.getServiceFactory().setDataBinding(new AegisDatabinding()); svrFactory.setProperties(props); svrFactory.getServiceFactory().setProperties(props); svrFactory.create(); Client (not dynamic): - MapString, Object props = new HashMapString, Object(); props.put(AegisDatabinding.WRITE_XSI_TYPE_KEY, Boolean.TRUE); //props.put(AegisDatabinding.READ_XSI_TYPE_KEY, false); ListString l = new ArrayListString(); l.add(YourCustomClassName.class.getName()); props.put(AegisDatabinding.OVERRIDE_TYPES_KEY, l); ClientProxyFactoryBean factory = new ClientProxyFactoryBean(); factory.setProperties(props); factory.getServiceFactory().setProperties(props); factory.setServiceClass(InterfaceClassName.class); factory.setAddress(address); factory.getServiceFactory().setDataBinding(new AegisDatabinding()); InterfaceClassName client = factory.create(); Object o = client.yourMethod(); -Original Message- From: Valerio Schiavoni [mailto:[EMAIL PROTECTED] Sent: Tuesday, April 01, 2008 2:43 PM To: cxf-user@incubator.apache.org Subject: Re: Problem deserializing pojos (fields not initialized) ehm..i forgot to had copy/paste this line to the example code showcasing the problem: wsServerFactoryBean.getServiceFactory().setDataBinding(new AegisDatabinding()); so: same error as before.. -- http://www.linkedin.com/in/vschiavoni http://jroller.com/vschiavoni -- http://www.linkedin.com/in/vschiavoni http://jroller.com/vschiavoni
Re: Problem deserializing pojos (fields not initialized)
Create an AegisContext, set the flag in there, push it into the AegisDatabinding.
RE: Problem deserializing pojos (fields not initialized)
I really would like to help, but I don't know I don't use it. Regards, Luba. -Original Message- From: Valerio Schiavoni [mailto:[EMAIL PROTECTED] Sent: Wednesday, April 02, 2008 4:02 PM To: cxf-user@incubator.apache.org Subject: Re: Problem deserializing pojos (fields not initialized) Hello , your code works fine, and infact my tests are now green-like-grass. The only minor issue is that: AegisDatabinding.WRITE_XSI_TYPE_KEY is deprecated in the 2.1-SNAPSHOT release I've been using. What should I use instead ? On Tue, Apr 1, 2008 at 2:38 PM, Alpin, Luba [EMAIL PROTECTED] wrote: Following works good: Server: --- ServerFactoryBean svrFactory = new ServerFactoryBean(); HashMapString, Object props = new HashMapString, Object(); props.put(AegisDatabinding.WRITE_XSI_TYPE_KEY, true); ArrayListString l = new ArrayListString(); l.add(YourCustomClassName.class.getName()); props.put(AegisDatabinding.OVERRIDE_TYPES_KEY, l); svrFactory.setServiceClass(InterfaceClassName.class); svrFactory.setAddress(address); svrFactory.setServiceBean(InterfaceImpl); svrFactory.getServiceFactory().setDataBinding(new AegisDatabinding()); svrFactory.setProperties(props); svrFactory.getServiceFactory().setProperties(props); svrFactory.create(); Client (not dynamic): - MapString, Object props = new HashMapString, Object(); props.put(AegisDatabinding.WRITE_XSI_TYPE_KEY, Boolean.TRUE); //props.put(AegisDatabinding.READ_XSI_TYPE_KEY, false); ListString l = new ArrayListString(); l.add(YourCustomClassName.class.getName()); props.put(AegisDatabinding.OVERRIDE_TYPES_KEY, l); ClientProxyFactoryBean factory = new ClientProxyFactoryBean(); factory.setProperties(props); factory.getServiceFactory().setProperties(props); factory.setServiceClass(InterfaceClassName.class); factory.setAddress(address); factory.getServiceFactory().setDataBinding(new AegisDatabinding()); InterfaceClassName client = factory.create(); Object o = client.yourMethod(); -Original Message- From: Valerio Schiavoni [mailto:[EMAIL PROTECTED] Sent: Tuesday, April 01, 2008 2:43 PM To: cxf-user@incubator.apache.org Subject: Re: Problem deserializing pojos (fields not initialized) ehm..i forgot to had copy/paste this line to the example code showcasing the problem: wsServerFactoryBean.getServiceFactory().setDataBinding(new AegisDatabinding()); so: same error as before.. -- http://www.linkedin.com/in/vschiavoni http://jroller.com/vschiavoni -- http://www.linkedin.com/in/vschiavoni http://jroller.com/vschiavoni
Re: Problem deserializing pojos (fields not initialized)
It works fine On Wed, Apr 2, 2008 at 3:06 PM, Benson Margulies [EMAIL PROTECTED] wrote: Create an AegisContext, set the flag in there, push it into the AegisDatabinding. For the curious ones, here's the code for the client (server is the same): clientProxyfactoryBean = new ClientProxyFactoryBean(); clientProxyfactoryBean.setServiceClass(clazz); clientProxyfactoryBean.setAddress(address); final AegisDatabinding aegisDatabinding = new AegisDatabinding(); AegisContext aegisCtx = new AegisContext(); aegisCtx.setReadXsiTypes(true); aegisDatabinding.setAegisContext(aegisCtx); clientProxyfactoryBean.getServiceFactory().setDataBinding( aegisDatabinding); -- http://www.linkedin.com/in/vschiavoni http://jroller.com/vschiavoni
RE: Problem deserializing pojos (fields not initialized)
Thanks, I need help to run it on https. Regards, Luba. -Original Message- From: Valerio Schiavoni [mailto:[EMAIL PROTECTED] Sent: Wednesday, April 02, 2008 5:03 PM To: cxf-user@incubator.apache.org Subject: Re: Problem deserializing pojos (fields not initialized) It works fine On Wed, Apr 2, 2008 at 3:06 PM, Benson Margulies [EMAIL PROTECTED] wrote: Create an AegisContext, set the flag in there, push it into the AegisDatabinding. For the curious ones, here's the code for the client (server is the same): clientProxyfactoryBean = new ClientProxyFactoryBean(); clientProxyfactoryBean.setServiceClass(clazz); clientProxyfactoryBean.setAddress(address); final AegisDatabinding aegisDatabinding = new AegisDatabinding(); AegisContext aegisCtx = new AegisContext(); aegisCtx.setReadXsiTypes(true); aegisDatabinding.setAegisContext(aegisCtx); clientProxyfactoryBean.getServiceFactory().setDataBinding( aegisDatabinding); -- http://www.linkedin.com/in/vschiavoni http://jroller.com/vschiavoni
Re: Problem deserializing pojos (fields not initialized)
I don't see what https has to do with this.
RE: Problem deserializing pojos (fields not initialized)
I need use secure SOAP. I succeeded with publish my services on https://localhost:8080/ServiceName; But client methods call fails. Thanks for your time. Regards, Luba. -Original Message- From: Benson Margulies [mailto:[EMAIL PROTECTED] Sent: Wednesday, April 02, 2008 5:27 PM To: cxf-user@incubator.apache.org Subject: Re: Problem deserializing pojos (fields not initialized) I don't see what https has to do with this.
Re: Problem deserializing pojos (fields not initialized)
Why don't you send in a new email message with a new subject line that describes exactly what you did and what didn't work. This thread was about the very specific question of the new configuration system for Aegis. On Wed, Apr 2, 2008 at 10:33 AM, Alpin, Luba [EMAIL PROTECTED] wrote: I need use secure SOAP. I succeeded with publish my services on https://localhost:8080/ServiceName; But client methods call fails. Thanks for your time. Regards, Luba. -Original Message- From: Benson Margulies [mailto:[EMAIL PROTECTED] Sent: Wednesday, April 02, 2008 5:27 PM To: cxf-user@incubator.apache.org Subject: Re: Problem deserializing pojos (fields not initialized) I don't see what https has to do with this.
Re: Problem deserializing pojos (fields not initialized)
ehm..i forgot to had copy/paste this line to the example code showcasing the problem: wsServerFactoryBean.getServiceFactory().setDataBinding(new AegisDatabinding()); so: same error as before.. -- http://www.linkedin.com/in/vschiavoni http://jroller.com/vschiavoni
Problem deserializing pojos (fields not initialized)
Hello, short version: before sending a pojo object over the network as a service invocation result: Pojo[id:2,name:pojo-2,date:2008-04-01T13:24:34.655+02:00] after receiving the object and having it deserialized: Pojo[id:0,name:null,date:null] longer version: i'm using the ServerFactoryBean to expose a java interface, by doing something like: wsServerFactoryBean = new ServerFactoryBean(); wsServerFactoryBean.setAddress(address); wsServerFactoryBean.setServiceClass(serviceClass); wsServerFactoryBean.setServiceBean(myDelegate); Now, consider the case where the interface to be exposed is the following: package org.objectweb.fractal.bf.connectors; public interface Service { void print(); String printAndAnswer(); javax.xml.datatype.XMLGregorianCalendar getCurrentDate(); Pojo getPojo(); } and Pojo is: public class Pojo { int id; String name; Pojo parent; XMLGregorianCalendar date; //all getter/setter heres have been commented } So, no rocket science. The interface is correctly exported, as the logs confirm [1]. Then, this service is invoked: to do so, i build the client using the DynamicClientFactory: DynamicClientFactory dcf = DynamicClientFactory.newInstance(); Client client = dcf.createClient(this.address); I do see the following in the logs: 1-apr-2008 13.24.30 org.apache.cxf.endpoint.dynamic.DynamicClientFactoryoutputDebug INFO: Created classes: org.objectweb.fractal.bf.connectors.GetCurrentDate, org.objectweb.fractal.bf.connectors.GetCurrentDateResponse, org.objectweb.fractal.bf.connectors.GetPojo, org.objectweb.fractal.bf.connectors.GetPojoResponse, org.objectweb.fractal.bf.connectors.ObjectFactory, org.objectweb.fractal.bf.connectors.Pojo, org.objectweb.fractal.bf.connectors.Print, org.objectweb.fractal.bf.connectors.PrintAndAnswer, org.objectweb.fractal.bf.connectors.PrintAndAnswerResponse, org.objectweb.fractal.bf.connectors.PrintResponse Finally, the service is invoked by the client: here I'm interested in the getPojo() method on the Service interface. For convenience, i print the object before marshalling the response and after the client has received it. Here's the result: //this is on the server-side Before serializing the response: Pojo[id:2,name:pojo-2,date:2008-04-01T13:24:34.655+02:00] //this is on the client side After object deserialization: Pojo[id:0,name:null,date:null] I'm using the latest 2.1-incubator-SNAPSHOT versions of the CXF artifacts. Let me know how I can be more helpful to help solving this bug. [1]: 1-apr-2008 13.24.27 org.springframework.context.support.AbstractApplicationContextprepareRefresh INFO: Refreshing [EMAIL PROTECTED]: display name [EMAIL PROTECTED]; startup date [Tue Apr 01 13:24:27 CEST 2008]; root of context hierarchy 1-apr-2008 13.24.27 org.apache.cxf.bus.spring.BusApplicationContextgetConfigResources INFO: No cxf.xml configuration file detected, relying on defaults. 1-apr-2008 13.24.27 org.springframework.beans.factory.support.DefaultListableBeanFactoryregisterBeanDefinition INFO: Overriding bean definition for bean ' org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder': replacing [Root bean: class [ org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder]; scope=singleton; abstract=false; lazyInit=false; autowireCandidate=true; autowireMode=0; dependencyCheck=0; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/Users/veleno/.m2/repository/org/apache/cxf/cxf-rt-transports-http/2.1-incubator-SNAPSHOT/cxf- rt-transports-http-2.1-incubator-SNAPSHOT.jar!/META-INF/cxf/cxf-extension-http.fixml]] with [Root bean: class [ org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder]; scope=singleton; abstract=false; lazyInit=false; autowireCandidate=true; autowireMode=0; dependencyCheck=0; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/Users/veleno/.m2/repository/org/apache/cxf/cxf-rt-transports-http/2.1-incubator-SNAPSHOT/cxf- rt-transports-http-2.1-incubator-SNAPSHOT.jar!/META-INF/cxf/cxf-extension-http.fixml ]] 1-apr-2008 13.24.27 org.springframework.beans.factory.support.DefaultListableBeanFactoryregisterBeanDefinition INFO: Overriding bean definition for bean ' org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder': replacing [Root bean: class [ org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder]; scope=singleton; abstract=false; lazyInit=false; autowireCandidate=true; autowireMode=0; dependencyCheck=0; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/Users/veleno/.m2/repository/org/apache/cxf/cxf-rt-transports-http/2.1-incubator-SNAPSHOT/cxf- rt-transports-http-2.1-incubator-SNAPSHOT.jar!/META-INF/cxf/cxf-extension-http.fixml]] with [Root bean: class [ org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder]; scope=singleton; abstract=false;
RE: Problem deserializing pojos (fields not initialized)
Following works good: Server: --- ServerFactoryBean svrFactory = new ServerFactoryBean(); HashMapString, Object props = new HashMapString, Object(); props.put(AegisDatabinding.WRITE_XSI_TYPE_KEY, true); ArrayListString l = new ArrayListString(); l.add(YourCustomClassName.class.getName()); props.put(AegisDatabinding.OVERRIDE_TYPES_KEY, l); svrFactory.setServiceClass(InterfaceClassName.class); svrFactory.setAddress(address); svrFactory.setServiceBean(InterfaceImpl); svrFactory.getServiceFactory().setDataBinding(new AegisDatabinding()); svrFactory.setProperties(props); svrFactory.getServiceFactory().setProperties(props); svrFactory.create(); Client (not dynamic): - MapString, Object props = new HashMapString, Object(); props.put(AegisDatabinding.WRITE_XSI_TYPE_KEY, Boolean.TRUE); //props.put(AegisDatabinding.READ_XSI_TYPE_KEY, false); ListString l = new ArrayListString(); l.add(YourCustomClassName.class.getName()); props.put(AegisDatabinding.OVERRIDE_TYPES_KEY, l); ClientProxyFactoryBean factory = new ClientProxyFactoryBean(); factory.setProperties(props); factory.getServiceFactory().setProperties(props); factory.setServiceClass(InterfaceClassName.class); factory.setAddress(address); factory.getServiceFactory().setDataBinding(new AegisDatabinding()); InterfaceClassName client = factory.create(); Object o = client.yourMethod(); -Original Message- From: Valerio Schiavoni [mailto:[EMAIL PROTECTED] Sent: Tuesday, April 01, 2008 2:43 PM To: cxf-user@incubator.apache.org Subject: Re: Problem deserializing pojos (fields not initialized) ehm..i forgot to had copy/paste this line to the example code showcasing the problem: wsServerFactoryBean.getServiceFactory().setDataBinding(new AegisDatabinding()); so: same error as before.. -- http://www.linkedin.com/in/vschiavoni http://jroller.com/vschiavoni