OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

sca-j message

[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]