Custom exception/fault with JBoss & JWSDP
bernhard_pauler Sep 13, 2007 3:13 PMI'm struggling with this issue for a good while now - I hope somebody can help me...
I want to develop a web service interface with methods that throw a custom exception. I have been using the developerWorks article on exception handling (http://www.ibm.com/developerworks/webservices/library/ws-tip-jaxrpc.html) and samples provided by web service toolkits like Axis as guides for my own implementation.
But JBoss (4.2.1.GA) keeps printing the following messages while deploying my WAR file:
19:25:26,031 WARN [JAXRPCMetaDataBuilder] Cannot obtain java type mapping for: {http://www.mycompany/MyService}>MyServiceFault
19:25:26,109 WARN [SchemaBindingBuilder] Type definition not found in schema: {http://www.mycompany.com/MyService}MyServiceFault
19:25:26,109 WARN [SchemaBindingBuilder] Cannot obtain type binding for: {http://www.mycompany.com/MyService}MyServiceFault
I start with a handwritten WSDL file (see below) and use the JWSDP tools (2.0) to generate the server-side artifacts and the JAX-RPC mapping file (as outlined in the book "JBoss at Work").
I tried the WSDL file of the faulthandling sample that comes with Apache Axis2 (1.3, bank.wsdl) and get the same messages.
Any ideas? Do I have to use the wstools that come with JBossWS to get this thing working?
Here is my WSDL file:
<?xml version="1.0" encoding="utf-8"?> <definitions name="MyService" xmlns ="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd ="http://www.w3.org/2001/XMLSchema" xmlns:soap ="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime ="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns ="http://www.mycompany.com/MyService" targetNamespace="http://www.mycompany.com/MyService"> <types> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.mycompany.com/MyService"> <element name="login"> <complexType> <sequence> <element name="customerId" type="xsd:string"/> <element name="userId" type="xsd:string"/> <element name="password" type="xsd:string"/> </sequence> </complexType> </element> <element name="loginResponse"> <complexType> <sequence> <element name="sessionId" type="xsd:int"/> </sequence> </complexType> </element> <element name="MyServiceFault"> <complexType> <sequence> <element name="errorCode" type="xsd:string"/> <element name="errorMessage" type="xsd:string"/> </sequence> </complexType> </element> </schema> </types> <message name="loginRequest"> <part name="parameters" element="tns:login"/> </message> <message name="loginResponse"> <part name="result" element="tns:loginResponse"/> </message> <message name="MyServiceFaultMessage"> <part name="fault" element="tns:MyServiceFault"/> </message> <portType name="MyServiceEndpoint"> <operation name="login"> <input message="tns:loginRequest"/> <output message="tns:loginResponse"/> <fault name="MyServiceFault" message="tns:MyServiceFaultMessage"/> </operation> </portType> <binding name="MyServiceEndpointBinding" type="tns:MyServiceEndpoint"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="login"> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> <fault name="MyServiceFault"> <soap:fault name="MyServiceFault" use="literal"/> </fault> </operation> </binding> <service name="MyService"> <port name="MyServiceEndpointPort" binding="tns:MyServiceEndpointBinding"> <soap:address location="REPLACE_WITH_ACTUAL_URL"/> </port> </service> </definitions>