[
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)