cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Lowski (JIRA)" <j...@apache.org>
Subject [jira] [Closed] (CXF-5588) IllegalArgumentException when invoking web service
Date Tue, 04 Mar 2014 11:15:20 GMT

     [ https://issues.apache.org/jira/browse/CXF-5588?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Robert Lowski closed CXF-5588.
------------------------------

    Resolution: Fixed

> IllegalArgumentException when invoking web service
> --------------------------------------------------
>
>                 Key: CXF-5588
>                 URL: https://issues.apache.org/jira/browse/CXF-5588
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime
>    Affects Versions: 3.0.0-milestone2
>         Environment: Netbeans 7.3, Glassfish 3.1.2
>            Reporter: Robert Lowski
>
> Hello Guys,
> i have a problem, invoking webservice with dynamic client from JaxWsDynamicClientFactory.
> at first a little code-example:
> Entity for web service shoud be an instance of class Person:
> public class Person {
> private String name;
> //public setter and getter for name
> }
> Web service:
> @WebService(serviceName = "NewWebService")
> @Stateless()
> public class NewWebService {
>  @WebMethod(operationName = "getPerson")
>     public Person getPerson(@WebParam(name = "person") Person person) {
>         person.setName("Testname");
>         return person;
>     }
> }
> Ok now I'm trying to invoke the web service method getPerson:
> JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
>             ClassLoader classLoader = DynamicWebserviceClient.class.getClassLoader();
>             Client client = dcf.createClient(wsdlFileName);
> //get instance of generated input-class
> Object person = Thread.currentThread().getContextClassLoader().loadClass("de.bit.group.kapatool.ws.Person").newInstance();
> //initialize instance
>  Method m = person.getClass().getMethod("setName", String.class);
>             m.invoke(person, "Robert");
> Up to this point everything works well. So now im trying to invoke the web service method.
Usually, yout would think, that you have to give the person instance as parameter for the
web service mehod like:
> client.invoke("getPerson", person);
> But when i do this, I get a IllegalArgumentException  because the invoke method is inspecting
an instance from de.bit.group.kapatool.ws.GetPerson. So I'm creating an instance of this class
like:
> Object getPerson = Thread.currentThread().getContextClassLoader().loadClass("de.bit.group.kapatool.ws.GetPerson").newInstance();
> and do:
> Field field = getPerson.getClass().getDeclaredField("person");
> //i know, that this isn't the smatest way but it's ok for this example
>             field.setAccessible(true);
>             field.set(getPerson, person);
> Now i have an initialized instance of de.bit.group.kapatool.ws.GetPerson and can invoke
the web service method with the client like:
> client.invoke("getPerson", getPerson);
> The web service is invoked but the input parameter is null. I think, it's because the
method expects an input of type peron and not getPerson.
> Am i'm doing something wrong?



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message