[jboss-user] [JBossWS] - WebFault targetNamespace and document/literal

bartvh do-not-reply at jboss.com
Wed Apr 1 12:47:26 EDT 2009


It looks like there is a problem with the namespace for web faults when this is not the same as the namespace of the service. The type definition of the web faults has the correct namespace, but the reference to the type from the messsage elements uses the name space of the service instead. 

For example:package zzz.ws.flt;
  | 
  | import javax.xml.bind.annotation.XmlType;
  | import javax.xml.ws.WebFault;
  | 
  | @WebFault(targetNamespace="zzz.ws.flt")
  | @XmlType(namespace="zzz.ws.flt")
  | public class ZZZException extends Exception {
  |   private String info;
  | 
  |   public ZZZException(String info) {
  |     this.setInfo(info);
  |   }
  | 
  |   public void setInfo(String info) {
  |     this.info = info;
  |   }
  | 
  |   public String getInfo() {
  |     return info;
  |   }
  | }
andpackage zzz.ws.srv.impl;
  | 
  | import javax.ejb.Remote;
  | import javax.ejb.Stateless;
  | import javax.jws.WebMethod;
  | import javax.jws.WebService;
  | import javax.jws.soap.SOAPBinding;
  | import javax.jws.soap.SOAPBinding.ParameterStyle;
  | import javax.jws.soap.SOAPBinding.Style;
  | import javax.jws.soap.SOAPBinding.Use;
  | 
  | import zzz.ws.flt.ZZZException;
  | import zzz.ws.srv.ZZZService;
  | 
  | @Stateless
  | @Remote(ZZZService.class)
  | @WebService(targetNamespace="zzz.ws.srv", name="ZZZService")
  | @SOAPBinding(style=Style.DOCUMENT, use=Use.LITERAL, parameterStyle=ParameterStyle.WRAPPED)
  | public class ZZZServiceImpl implements ZZZService {
  | 
  |   @WebMethod
  |   public String echo(String input) throws ZZZException {
  |     return input;
  |   }
  | }

generates

<?xml version="1.0" encoding="UTF-8"?>
  | <definitions name="ZZZServiceImplService" targetNamespace="zzz.ws.srv" xmlns:tns="zzz.ws.srv" xmlns:ns1="zzz.ws.flt" 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="zzz.ws.srv" version="1.0" xmlns:tns="zzz.ws.srv" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  |    <xs:element name="echo" type="tns:echo"/>
  |    <xs:element name="echoResponse" type="tns:echoResponse"/>
  |    <xs:complexType name="echo">
  |     <xs:sequence>
  |      <xs:element minOccurs="0" name="arg0" type="xs:string"/>
  |     </xs:sequence>
  |    </xs:complexType>
  |    <xs:complexType name="echoResponse">
  |     <xs:sequence>
  |      <xs:element minOccurs="0" name="return" type="xs:string"/>
  |     </xs:sequence>
  |    </xs:complexType>
  |   </xs:schema>
  |     <xs:schema targetNamespace="zzz.ws.flt" version="1.0" xmlns:tns="zzz.ws.flt" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  |    <xs:element name="ZZZException" type="tns:ZZZException"/>
  |    <xs:complexType name="ZZZException">
  |     <xs:sequence>
  |      <xs:element minOccurs="0" name="info" type="xs:string"/>
  |      <xs:element minOccurs="0" name="message" type="xs:string"/>
  |     </xs:sequence>
  |    </xs:complexType>
  |   </xs:schema>
  |   </types>
  |   <message name="ZZZService_echo">
  |     <part name="echo" element="tns:echo">
  |     </part>
  |   </message>
  |   <message name="ZZZException">
  |     <part name="ZZZException" element="tns:ZZZException">
  |     </part>
  |   </message>
  |   <message name="ZZZService_echoResponse">
  |     <part name="echoResponse" element="tns:echoResponse">
  |     </part>
  |   </message>
  |   <portType name="ZZZService">
  |     <operation name="echo" parameterOrder="echo">
  |       <input message="tns:ZZZService_echo">
  |     </input>
  |       <output message="tns:ZZZService_echoResponse">
  |     </output>
  |       <fault name="ZZZException" message="tns:ZZZException">
  |     </fault>
  |     </operation>
  |   </portType>
  |   <binding name="ZZZServiceBinding" type="tns:ZZZService">
  |     <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
  |     <operation name="echo">
  |       <soap:operation soapAction=""/>
  |       <input>
  |         <soap:body use="literal"/>
  |       </input>
  |       <output>
  |         <soap:body use="literal"/>
  |       </output>
  |       <fault name="ZZZException">
  |         <soap:fault name="ZZZException" use="literal"/>
  |       </fault>
  |     </operation>
  |   </binding>
  |   <service name="ZZZServiceImplService">
  |     <port name="ZZZServicePort" binding="tns:ZZZServiceBinding">
  |       <soap:address location="http://jbossws.undefined.host:8080/zzz-zzzservice-ejb/ZZZServiceImpl"/>
  |     </port>
  |   </service>
  | </definitions>

Notice the element="tns:ZZZException" in the output.

This is running jbossws-native-3.1.0.GA on jboss-4.2.3.GA.

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4222724#4222724

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4222724



More information about the jboss-user mailing list