users@jax-rpc.java.net

Re: DII, Dynamic proxies and JavaBeans

From: Phil Goodwin <Phil.Goodwin_at_Sun.COM>
Date: Sat, 03 Aug 2002 10:39:57 -0700

Ah, I see what's going on, or at least some of it. Because you specified
a WSDL file the system is trying to do the equivalent of addParameter
and setReturnType for you. That's why it won't allow you to call these
methods yourself. The fact that the system isn't finding or creating a
serializer for the types specified in the WSDL is disturbing. It
indicates that there is either a problem with the WSDL or a bug in the
system. I will check into the former possibility during the week next
week. We might also want to look at the WSDL file. In the meantime you
can solve your problem by not specifying the WSDL when you create your
Service object and using long form of addParameter and setReturnType to
manually set the expected types. Let me know if that works for you.

Sam wrote:

>Tried that. Here is what happens.
>
>Exception in thread "main" cannot set parameter or return types on this
>Call object
> at
>com.sun.xml.rpc.client.dii.BasicCall.checkIsParameterAndReturnTypeSpecAllowed(BasicCall.java:328)
> at
>com.sun.xml.rpc.client.dii.BasicCall.setReturnType(BasicCall.java:163)
> at DIIClient_WSDL.main(DIIClient_WSDL.java:69)
>
>
>/s
>
>
>
>Phil Goodwin wrote:
>
>>You need to call addParameter() and setReturnType() in order for this
>>call to work. Let me know if you need additional information.
>>
>>Sam wrote:
>>
>>>Here you go.
>>>
>>>/s
>>>
>>>
>>>
>>>====================================
>>>
>>>
>>>import javax.xml.rpc.Call;
>>>import javax.xml.rpc.Service;
>>>import javax.xml.rpc.ParameterMode;
>>>import javax.xml.rpc.ServiceFactory;
>>>import java.net.URL;
>>>
>>>public class TestClient{
>>>
>>>
>>> public static void main(String[] args) throws Exception {
>>>
>>> String url= "http://127.0.0.1:9090/hello/hello.wsdl";
>>> String namespace = "http://hello.com/";
>>> String serviceName = "HelloService";
>>>
>>> ServiceFactory factory = ServiceFactory.newInstance();
>>> Service service = (Service) factory.createService(new
>>>URL(url),new QName(namespace,serviceName));
>>>
>>> QName portName = new QName(namespace,"HelloPort");
>>> QName operationName = new QName(namespace,"sayHello");
>>>
>>> Call call = service.createCall(portName, operationName);
>>>
>>> Test t = new Test();
>>> t.setValue("hello duke");
>>>
>>> Object[] params = {t};
>>>
>>> String answer= (String)call.invoke(params);
>>> System.out.println("Last payment was " + answer);
>>>
>>>
>>> }
>>>}
>>>
>>>
>>>
>>>public class Test {
>>>
>>>private String value="default";
>>>
>>>public Test(){}
>>>
>>>public String getValue() {
>>>return value;
>>>}
>>>
>>>public void setValue(String value){
>>> this.value=value;
>>> }
>>>
>>>
>>>====================================
>>>
>>>
>>>Phil Goodwin wrote:
>>>
>>>>Sam, can you re-post the client code for this. I believe I can help you.
>>>>
>>>>Sam wrote:
>>>>
>>>>>The spes dont require beans to be Serializable. If this was
>>>>>the case ,it wouldnt work with static stubs either.
>>>>>
>>>>>/s
>>>>>
>>>>>
>>>>>
>>>>>Manoj Kumar wrote:
>>>>>
>>>>>>try changing the first line to the following
>>>>>>
>>>>>>public class Test implements Serializable {
>>>>>>
>>>>>>hope this will work
>>>>>>
>>>>>>thnaks & regards,
>>>>>>Manoj
>>>>>>
>>>>>>"bytecode_at_phreaker.net" wrote:
>>>>>>
>>>>>>>I agree. And thats what it is. The beans I m passing are very simple Here
>>>>>>>is an example
>>>>>>>
>>>>>>>public class Test {
>>>>>>>
>>>>>>>private String value="default";
>>>>>>>
>>>>>>>public Test(){}
>>>>>>>
>>>>>>>public String getValue() {
>>>>>>>return value;
>>>>>>>}
>>>>>>>
>>>>>>>public void setValue(String value){
>>>>>>> this.value=value;
>>>>>>> }
>>>>>>>}
>>>>>>>
>>>>>>>Why do I need to specify Typemappings for thsi and write
>>>>>>>serializer/deserializers when I use DII or Dynamic proxies ??
>>>>>>>
>>>>>>>Is this a bug in the implementation???
>>>>>>>
>>>>>>>/sam
>>>>>>>
>>>>>>>Original Message:
>>>>>>>-----------------
>>>>>>>From: Manoj Kumar m.kumar_at_oracle.com
>>>>>>>Date: Sun, 28 Jul 2002 13:31:27 +0530
>>>>>>>To: bytecode_at_Phreaker.net
>>>>>>>Subject: Re: DII, Dynamic proxies and JavaBeans
>>>>>>>
>>>>>>>Sam,
>>>>>>> There are some restrictions which a javabean must conform to.
>>>>>>>
>>>>>>>1) It must have a public default constructor
>>>>>>>2) It must not implement (either directly or indirectly) the
>>>>>>>java.rmi.Remote interface
>>>>>>>3) Its fields muct be supported JAX-RPC types
>>>>>>>4) It must impkements Serializable Interface.
>>>>>>>
>>>>>>>Thanks
>>>>>>>Manoj
>>>>>>>
>>>>>>>Sam wrote:
>>>>>>>
>>>>>>>>I give up and now i m totally clueless.
>>>>>>>>
>>>>>>>>Tried DII and Dynamic proxy with a simple JavaBean as
>>>>>>>>the return type.
>>>>>>>>
>>>>>>>>I keep getting this error
>>>>>>>>
>>>>>>>>no serializer is registered for (null, {http://hello.com}MyBean)
>>>>>>>>
>>>>>>>>What do I do ? I thought JAX-RPC was supposed to marshall/unmarshall
>>>>>>>>simple JavaBeans because they were a built in type.
>>>>>>>>
>>>>>>>>Any ideas or example code would be appreciated
>>>>>>>>
>>>>>>>>Thanks
>>>>>>>>/s
>>>>>>>>
>>>>>>>--
>>>>>>> _____________________________________________________
>>>>>>> /) (\
>>>>>>> / ) Manoj Kumar Email: m.kumar_at_oracle.com ( \
>>>>>>>_( (| Oracle India Ltd Phone: 91 40 3122600-3507 |) )_
>>>>>>>(((\ \_____________________________________________________/ /)))
>>>>>>>(\\\\ \_// \\_/ ////)
>>>>>>>\ / \ /
>>>>>>>\ / \ /
>>>>>>>/ / \ \
>>>>>>>
>>>>>>>--------------------------------------------------------------------
>>>>>>>mail2web - Check your email from the web at
>>>>>>>http://mail2web.com/ .
>>>>>>>
>>>>>>--
>>>>>> _____________________________________________________
>>>>>> /) (\
>>>>>> / ) Manoj Kumar Email: m.kumar_at_oracle.com ( \
>>>>>>_( (| Oracle India Ltd Phone: 91 40 3122600-3507 |) )_
>>>>>>(((\ \_____________________________________________________/ /)))
>>>>>>(\\\\ \_// \\_/ ////)
>>>>>>\ / \ /
>>>>>>\ / \ /
>>>>>>/ / \ \
>>>>>>
>>>>--
>>>>-----------------------------------------------------------------------
>>>>Phil Goodwin, Java Software, Sun Microsystems, 408.276.7090, or x17090
>>>>
>>>>For a bowl of water give a goodly meal;
>>>>For a kindly greeting bow thou down with zeal;
>>>>For a simple penny pay thou back with gold;
>>>>If thy life be rescued, life do not withhold.
>>>>Thus the words and actions of the wise regard;
>>>>Every little service tenfold they reward.
>>>>But the truly noble know all men as one,
>>>>And return with gladness good for evil done.
>>>>
>>--
>>-----------------------------------------------------------------------
>>Phil Goodwin, Java Software, Sun Microsystems, 408.276.7090, or x17090
>>
>>For a bowl of water give a goodly meal;
>>For a kindly greeting bow thou down with zeal;
>>For a simple penny pay thou back with gold;
>>If thy life be rescued, life do not withhold.
>>Thus the words and actions of the wise regard;
>>Every little service tenfold they reward.
>>But the truly noble know all men as one,
>>And return with gladness good for evil done.
>>

--
-----------------------------------------------------------------------
Phil Goodwin, Java Software, Sun Microsystems, 408.276.7090, or x17090
For a bowl of water give a goodly meal;
For a kindly greeting bow thou down with zeal;
For a simple penny pay thou back with gold;
If thy life be rescued, life do not withhold.
Thus the words and actions of the wise regard;
Every little service tenfold they reward.
But the truly noble know all men as one,
And return with gladness good for evil done.