[JBoss-dev] Error passing Complex Types as parameters in Web Service

nandan_tiwari nandan.tiwari1 at wipro.com
Tue Aug 26 23:49:06 EDT 2008


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
-- 
View this message in context: http://www.nabble.com/Error-passing-Complex-Types-as-parameters-in-Web-Service-tp19174282p19174282.html
Sent from the JBoss - Dev mailing list archive at Nabble.com.




More information about the jboss-development mailing list