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