Robert Lowski created CXF-5588:
----------------------------------
Summary: 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)