[jboss-user] [JBossWS] - org.jboss.ws.WSException: Cannot obtain java type mapping fo
tim.cockle
do-not-reply at jboss.com
Tue Sep 19 03:25:24 EDT 2006
Hi All,
I hope you can help me as I have been knocking me head against a wall for a couple of days now. I can seem to get a simple hello service working for document/literal.
The problem is this I have a simple SLSB which I am using as a web service:
| package myejbws;
|
| import java.rmi.RemoteException;
|
| import javax.ejb.EJBException;
| import javax.ejb.SessionBean;
| import javax.ejb.SessionContext;
|
| import javax.ejb.CreateException;
|
| /**
| * @ejb.bean name="Hello"
| * display-name="Name for Hello"
| * description="Description for Hello"
| * jndi-name="ejb/Hello"
| * type="Stateless"
| * view-type="all"
| *
| */
| public class HelloBean implements SessionBean {
|
| public void setSessionContext(SessionContext ctx)
| throws EJBException,
| RemoteException {
| System.out.println("HelloBean.setSessionContext");
| }
|
| public void ejbRemove() throws EJBException, RemoteException {
| System.out.println("HelloBean.ejbRemove");
|
| }
|
| public void ejbActivate() throws EJBException, RemoteException {
| System.out.println("HelloBean.ejbActivate");
|
| }
|
| public void ejbPassivate() throws EJBException, RemoteException {
| System.out.println("HelloBean.ejbPassivate");
|
| }
|
| /**
| * Default create method
| *
| * @throws CreateException
| * @ejb.create-method
| */
| public void ejbCreate() throws CreateException {
| System.out.println("HelloBean.ejbCreate");
| }
|
| /**
| *
| * @ejb.interface-method view-type="all"
| * @param name
| * @return
| * @throws EJBException
| * @throws RemoteException
| */
| public String sayHello(String name) {
| System.out.println("HelloBean.sayHello("+name+")");
| return "Hello " +name+" from HelloBean";
| }
|
I have used the SWTool with the following config:
|
| <?xml version="1.0" encoding="UTF-8"?>
|
| <configuration xmlns="www.aware-services.co.uk/ws">
| <java-wsdl>
| <service name="HelloService"
| style="document"
| endpoint="myejbws.HelloEndpoint"/>
| <namespaces target-namespace="www.aware-services.co.uk/ws/hello"
| type-namespace="www.aware-services.co.uk/ws/hello/types"/>
| <mapping files="jaxrpc-mapping.xml"/>
| <webservices ejb-link="Hello"/>
| </java-wsdl>
| </configuration>
|
If I set the style to rpc all deploys fine and the client works as well.
However when I change the style to document, create and compile the additional class created by the WSTool, it deploys but I get the following error from the client:
anonymous wrote :
| tim at Monkey:~/workspace/TestWSEJB$ ant run-client
| Buildfile: build.xml
|
| ejbdoclet:
| [ejbdoclet] 0 [main] INFO XDocletMain.start - Running
| [ejbdoclet] 214 [main] INFO XDocletMain.start - Running
| [ejbdoclet] 221 [main] INFO XDocletMain.start - Running
| [ejbdoclet] 225 [main] INFO XDocletMain.start - Running
| [ejbdoclet] 229 [main] INFO XDocletMain.start - Running
| [ejbdoclet] 235 [main] INFO XDocletMain.start - Running <service-endpoint/>
| [ejbdoclet] 239 [main] INFO XDocletMain.start - Running
| [ejbdoclet] 302 [main] INFO XDocletMain.start - Running
|
| compile:
|
| run-client:
| [java] Welcome
| [java] Contacting webservice at http://Monkey:8080/hello/Hello?wsdl
| [java] set up service...
| [java] log4j:WARN No appenders could be found for logger (org.jboss.ws.metadata.JSR109ClientMetaDataBuilder).
| [java] log4j:WARN Please initialize the log4j system properly.
| [java] org.jboss.ws.WSException: Cannot obtain java type mapping for: {www.aware-services.co.uk/ws/hello/types}sayHello
| [java] at org.jboss.ws.metadata.JSR109MetaDataBuilder.buildParameterMetaDataDoc(JSR109MetaDataBuilder.java:442)
| [java] at org.jboss.ws.metadata.JSR109MetaDataBuilder.setupOperationsFromWSDL(JSR109MetaDataBuilder.java:193)
| [java] at org.jboss.ws.metadata.JSR109ClientMetaDataBuilder.buildMetaDataInternal(JSR109ClientMetaDataBuilder.java:207)
| [java] at org.jboss.ws.metadata.JSR109ClientMetaDataBuilder.buildMetaData(JSR109ClientMetaDataBuilder.java:122)
| [java] at org.jboss.ws.metadata.JSR109ClientMetaDataBuilder.buildMetaData(JSR109ClientMetaDataBuilder.java:78)
| [java] at org.jboss.ws.jaxrpc.ServiceImpl.(ServiceImpl.java:96)
| [java] at org.jboss.ws.jaxrpc.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:157)
| [java] at org.jboss.ws.jaxrpc.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:128)
| [java] at myclient.HelloWsEjbClient.main(Unknown Source)
|
| BUILD SUCCESSFUL
| Total time: 4 seconds
|
I have looked in the WSDL and the mappings files and they look fine. The WSDL is as follows:
|
| <definitions name="HelloService" targetNamespace="www.aware-services.co.uk/ws/hello">
|
| <types>
|
| <schema targetNamespace="www.aware-services.co.uk/ws/hello/types">
|
| <complexType name="sayHello">
|
| <sequence>
| <element name="String_1" nillable="true" type="string"/>
| </sequence>
| </complexType>
|
| <complexType name="sayHelloResponse">
|
| <sequence>
| <element name="result" nillable="true" type="string"/>
| </sequence>
| </complexType>
| <element name="sayHello" type="tns:sayHello"/>
| <element name="sayHelloResponse" type="tns:sayHelloResponse"/>
| </schema>
| </types>
|
| <message name="HelloEndpoint_sayHello">
| <part element="ns1:sayHello" name="parameters"/>
| </message>
|
| <message name="HelloEndpoint_sayHelloResponse">
| <part element="ns1:sayHelloResponse" name="result"/>
| </message>
|
| <portType name="HelloEndpoint">
|
| <operation name="sayHello">
| <input message="tns:HelloEndpoint_sayHello"/>
| <output message="tns:HelloEndpoint_sayHelloResponse"/>
| </operation>
| </portType>
|
| <binding name="HelloEndpointBinding" type="tns:HelloEndpoint">
| <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
| <operation name="sayHello">
| <soap:operation soapAction=""/>
|
| <input>
| <soap:body use="literal"/>
| </input>
|
| <output>
| <soap:body use="literal"/>
| </output>
| </operation>
| </binding>
|
| <service name="HelloService">
|
| <port binding="tns:HelloEndpointBinding" name="HelloEndpointPort">
| <soap:address location="http://Monkey:8080/hello/Hello"/>
| </port>
| </service>
| </definitions>
|
The same thing happens if you use RPC but I pass back a non standard class (such as MyDataObject).
HeLp!!!! (Please)
Tim
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3972492#3972492
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3972492
More information about the jboss-user
mailing list