[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [sca-j] Potential issues
According to JSR-181 where the @WebService is defined, the value of @WebService.name is mapped to wsdl:portType name and @WebService.serviceName is mapped to wsdl:service name. The @WebService.serviceName is however only allowed on implmentation or class; it is not allowed on interface. It seems to me the specs overload the meaing of @WebService.name that "If used to define a service, sets service name", is this the cause of the problem? Thanks, -chen > While working on the new test cases for Issue 209, two potential issues > arose. > > 1) Interaction between @Service and @WebService > Consider the following... > > @Service(ServiceWithName.class) > public class serviceWithNameImpl implements ServiceWithName { > ... > } > > and > > @WebService(name="AnnotationName") > @Remotable > public interface ServiceWithName { > ... > } > > The @Service annotation would imply that the service name of a component > using serviceWithNameImpl as an implementation would be ServiceWithName > but @WebService annotation requires the service name to be > AnnotationName. Which takes precedence? Or should the conflict be > raised as an error? > > 2) We may have misinterpreted the impacts of @WebFault. The current > text in both the CAA and JCI specs indicates that the name attribute of > a @WebFault annotation impacts the name of the fault in the interface. > Some experimentation suggests that this is not the case. > The combination of : > > @WebService > public class Service1WithFaultWFImpl implements Service1WithFaultWF { > > public String operation1(String input) throws BusinessFault3 { > ... > } > } > > @WebService > public interface Service1WithFaultWF { > > public String operation1 ( String input ) throws BusinessFault3; > } > > @WebFault(name="BusinessFault") > public class BusinessFault3 extends Exception { > ... > } > > and > > public class BusinessFault3Bean { > private String data; > > public String getData() { > return data; > } > > public void setData(String faultData) { > data = faultData; > } > } > > result in a WSDL file of > > <?xml version="1.0" encoding="UTF-8"?><!-- Generated by JAX-WS RI at > http://jax-ws.dev.java.net <http://jax-ws.dev.java.net/>. RI's version > is JAX-WS RI 2.1.1 in JDK 6. --><definitions > name="Service1WithFaultWFImplService" targetNamespace="http://test/" > xmlns="http://schemas.xmlsoap.org/wsdl/" > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:tns="http://test/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > <types> > <xsd:schema> > <xsd:import namespace="http://test/" > schemaLocation="Service1WithFaultWFImplService_schema1.xsd"/> > </xsd:schema> > </types> > <message name="operation1"> > <part element="tns:operation1" name="parameters"/> > </message> > <message name="operation1Response"> > <part element="tns:operation1Response" name="parameters"/> > </message> > <message name="BusinessFault3"> > <part element="tns:BusinessFault" name="fault"/> > </message> > <portType name="Service1WithFaultWFImpl"> > <operation name="operation1"> > <input message="tns:operation1"/> > <output message="tns:operation1Response"/> > <fault message="tns:BusinessFault3" name="BusinessFault3"/> > </operation> > </portType> > <binding name="Service1WithFaultWFImplPortBinding" > type="tns:Service1WithFaultWFImpl"> > ... > </binding> > <service name="Service1WithFaultWFImplService"> > ... > </service> > </definitions> > > with > > <?xml version="1.0" encoding="UTF-8"?><xs:schema > targetNamespace="http://test/" version="1.0" xmlns:tns="http://test/" > xmlns:xs="http://www.w3.org/2001/XMLSchema"> > > <xs:element name="BusinessFault" nillable="true" > type="tns:businessFault3Bean"/> > > <xs:element name="operation1" type="tns:operation1"/> > > <xs:element name="operation1Response" type="tns:operation1Response"/> > > <xs:complexType name="operation1"> > ... > </xs:complexType> > > <xs:complexType name="operation1Response"> > ... > </xs:complexType> > > <xs:complexType name="businessFault3Bean"> > <xs:sequence> > <xs:element minOccurs="0" name="data" type="xs:string"/> > </xs:sequence> > </xs:complexType> > </xs:schema> > > > Note that in the operation, the name of the fault s BusinessFault3, not > BusinessFault. The name attribute of the @WebFault annotation only > impacts the local name of the global element. A closer reading of the > JAX-WS spec is consistent with this behavior. I think we may need to > change the @WebFault content of table 11.2 of the CAA spec to remove the > impact of the name attribute on the interface, removing normative > statement JCA100027, and remove section 8.2.6 of the JCI spec > > Bryan Aupperle, Ph.D. > STSM, WebSphere Enterprise Platform Software Solution Architect > WW Center of Excellence for Enterprise Systems & Banking Center of > Excellence Application Integration Architect > > Research Triangle Park, NC > +1 919-254-7508 (T/L 444-7508) > Internet Address: aupperle@us.ibm.com
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]