[JBoss-dev] Error passing Complex Types as parameters in Web Service
Alessio Soldano
asoldano at redhat.com
Wed Aug 27 02:12:01 EDT 2008
Please post to the user forum:
http://www.jboss.com/index.html?module=bb&op=viewforum&f=200
nandan_tiwari ha scritto:
> Hi,
>
> I have created a simple Hello World Web Service.
> And a POJO, HelloParam.
> The method exposed in the web service "sayHello" takes HelloParam object as
> parameter.
> The WSDL is generated and is deployed successfully over JBoss.
> But when I run the client, I get the following error:
>
> Exception in thread "main" org.jboss.ws.WSException: Cannot obtain java type
> mapping for: {http://ejb3webservice.wipro.com/}helloParam
>
> Following are the classes that I have created:
>
>
> HelloParam.java
>
> package com.wipro.ejb3webservice;
>
> import java.io.Serializable;
>
> public class HelloParam implements Serializable{
> /**
> *
> */
> private static final long serialVersionUID = 5446103626304202057L;
> String firstName;
> String lastName;
>
> /**
> * @return the firstName
> */
> public String getFirstName() {
> return firstName;
> }
> /**
> * @param firstName the firstName to set
> */
> public void setFirstName(String firstName) {
> this.firstName = firstName;
> }
> /**
> * @return the lastName
> */
> public String getLastName() {
> return lastName;
> }
> /**
> * @param lastName the lastName to set
> */
> public void setLastName(String lastName) {
> this.lastName = lastName;
> }
> /**
> * @param firstName
> * @param lastName
> */
> public HelloParam(String firstName, String lastName) {
> super();
> this.firstName = firstName;
> this.lastName = lastName;
> }
> /**
> *
> */
> public HelloParam() {
>
> }
> }
>
>
> The Interface which is exposed as webservice is:
>
> HelloWorld.java
>
> package com.wipro.ejb3webservice;
>
> import java.rmi.Remote;
>
> import javax.jws.WebService;
> import javax.jws.soap.SOAPBinding;
> import javax.jws.soap.SOAPBinding.Style;
>
>
> @WebService
> @SOAPBinding(style = Style.RPC)
> public interface HelloWorld extends Remote {
> public void sayHello(HelloParam helloParam);
> }
>
>
>
> And the implementation of the interface is :
>
>
> HelloWorldImpl.java
>
> package com.wipro.ejb3webservice;
>
> import javax.ejb.Remote;
> import javax.ejb.Stateless;
> import javax.jws.WebMethod;
> import javax.jws.WebParam;
> import javax.jws.WebService;
>
>
> @Stateless
> @Remote(HelloWorld.class)
> @WebService(name="HelloWorldName"
> ,serviceName="HelloWorldImplService",endpointInterface =
> "com.wipro.ejb3webservice.HelloWorld")
> public class HelloWorldImpl implements HelloWorld {
>
> @WebMethod
> public void sayHello(
> @WebParam(name="helloParam" )
> HelloParam helloParam)
> {
> System.out.println("first name" + helloParam.getFirstName()+"last name--"+
> helloParam.getLastName());
>
> }
> }
>
>
> The WSDL is generated:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <definitions name="HelloWorldImplService"
> targetNamespace="http://ejb3webservice.wipro.com/"
> xmlns:tns="http://ejb3webservice.wipro.com/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns="http://schemas.xmlsoap.org/wsdl/">
> <types>
> <xs:schema targetNamespace="http://ejb3webservice.wipro.com/"
> version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xs:complexType name="helloParam">
> <xs:sequence>
> <xs:element minOccurs="0" name="firstName" type="xs:string"/>
> <xs:element minOccurs="0" name="lastName" type="xs:string"/>
> </xs:sequence>
> </xs:complexType>
> </xs:schema>
> </types>
> <message name="HelloWorld_sayHelloResponse">
> </message>
> <message name="HelloWorld_sayHello">
> <part name="arg0" type="tns:helloParam">
> </part>
> </message>
> <portType name="HelloWorld">
> <operation name="sayHello" parameterOrder="arg0">
> <input message="tns:HelloWorld_sayHello">
> </input>
> <output message="tns:HelloWorld_sayHelloResponse">
> </output>
> </operation>
> </portType>
> <binding name="HelloWorldBinding" type="tns:HelloWorld">
> <soap:binding style="rpc"
> transport="http://schemas.xmlsoap.org/soap/http"/>
> <operation name="sayHello">
> <soap:operation soapAction=""/>
> <input>
> <soap:body use="literal"
> namespace="http://ejb3webservice.wipro.com/"/>
> </input>
> <output>
> <soap:body use="literal"
> namespace="http://ejb3webservice.wipro.com/"/>
> </output>
> </operation>
> </binding>
> <service name="HelloWorldImplService">
> <port name="HelloWorldNamePort" binding="tns:HelloWorldBinding">
> <soap:address
> location="http://localhost:8080/Ejb3Webservice/HelloWorldImpl"/>
> </port>
> </service>
> </definitions>
>
>
> Can anyone help me on this issue.
> Itz very urgent.
>
> Regards
> -Nandan
>
More information about the jboss-development
mailing list