sca-j message
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
| [List Home]
Subject: Re: [sca-j] Potential issues
- From: Bryan Aupperle <aupperle@us.ibm.com>
- To: Shih-Chang Chen <shih-chang.chen@oracle.com>
- Date: Thu, 2 Sep 2010 10:48:43 -0400
From JSR 181 (JSR_181_web_services_metadata_2_0_spec.pdf)
section 4.1.1: Marks a Java class as implementing a WebService, or
a Java interface as defining a WebService interface.
In general, in SCA the name of a service
in a componentType is the name of of the implementation object that defines
the operations of the object (the portType in WSDL) so if a interface indicates
via a @WebService annotation that its portType is named foo, the name of
a service with the interface should also be named foo.
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
From:
| Shih-Chang Chen <shih-chang.chen@oracle.com>
|
To:
| Bryan Aupperle/Raleigh/IBM@IBMUS
|
Cc:
| sca-j@lists.oasis-open.org
|
Date:
| 09/02/2010 10:08 AM
|
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]