Return-Path: Delivered-To: apmail-incubator-cxf-dev-archive@locus.apache.org Received: (qmail 6366 invoked from network); 1 Nov 2006 08:49:44 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 1 Nov 2006 08:49:44 -0000 Received: (qmail 68874 invoked by uid 500); 1 Nov 2006 08:49:55 -0000 Delivered-To: apmail-incubator-cxf-dev-archive@incubator.apache.org Received: (qmail 68839 invoked by uid 500); 1 Nov 2006 08:49:55 -0000 Mailing-List: contact cxf-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cxf-dev@incubator.apache.org Delivered-To: mailing list cxf-dev@incubator.apache.org Received: (qmail 68830 invoked by uid 99); 1 Nov 2006 08:49:55 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 00:49:55 -0800 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: domain of Ning.Jiang@iona.com designates 65.223.216.181 as permitted sender) Received: from [65.223.216.181] (HELO amereast-smg1.iona.com) (65.223.216.181) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 00:49:43 -0800 Received: from amer-ems1.IONAGLOBAL.COM ([10.65.6.25]) by amereast-smg1.iona.com (Switch-3.1.7/Switch-3.1.7) with ESMTP id kA18n4fI009990 for ; Wed, 1 Nov 2006 03:49:10 -0500 (EST) Received: from [10.129.9.105] ([10.129.9.105]) by amer-ems1.IONAGLOBAL.COM with Microsoft SMTPSVC(6.0.3790.1830); Wed, 1 Nov 2006 03:39:58 -0500 Message-ID: <45485CDF.4060809@iona.com> Date: Wed, 01 Nov 2006 16:37:51 +0800 From: Willem Jiang User-Agent: Mozilla Thunderbird 1.0.7 (X11/20050923) X-Accept-Language: en-us, en MIME-Version: 1.0 To: cxf-dev@incubator.apache.org Subject: Something about the SEI Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 01 Nov 2006 08:39:59.0482 (UTC) FILETIME=[50D465A0:01C6FD91] X-Virus-Checked: Checked by ClamAV on apache.org Hi, I just went through the JAX-WS 2.0 specification (Final Release April 19, 2006) about the SEI , and found there some interesting use cases CXF can't treat properly. Here is how can we get the SEI from implementation class in the Chapter 3 "Java to WSDL 1.1 Mapping" P30. " In order to allow for a separation between Web service interface and implementation, if the WebService annotation on the class under consideration has a endpointInterface element, then the interface referred by this element is for all purposes the SEI associated with the class. Otherwise, the class implicitly defines a service endpoint interface (SEI) which comprises all of the public methods that satisfy one of the following conditions: 1. They are annotated with the javax.jws.WebMethod annotation with the exclude element set to false or missing (since false is the default for this annotation element). 2. They are not annotated with the javax.jws.WebMethod annotation but their declaring class has a javax.jws.WebService annotation. For mapping purposes, this implicit SEI and its methods are considered to be annotated with the same Web service-related annotations that the original class and its methods have. In pratice, in order to exclude a public method of a class annotated with WebService and not directly specifying a endpointInterface from the implicitly defined SEI, it is necessary to annotate the method with a WebMethod annotation with the exclude element set to true." The specification talked about two situations, one is about the SEI defined in the WebService annotation explicitly. the other is about implicitly definition of SEI. In CXF, we treat SEI as A interface class which is defined in JaxWsImplementorInfo, public Class getEndpointClass() { Class endpointInterface = getSEIClass(); if (null == endpointInterface) { endpointInterface = getImplementorClass(); } return endpointInterface; } In most cases this definition works fine, but there also some use cases we can't treat the SEI class as A kind of interface class. eg, @WebService public class A implements B,C,D B, C are the interface which are annotated with "WebService". In CXF, we just can tell B is the SEI , and will forget the all "WebMethod" which are defined in the interface C. IMO , we should filter all the methods in class A, to tell which method is the "WebMethod" as the specification said and The SEI should comprises these methods. Any thoughts? Willem. -- Willem Jiang Software Engineer IONA Asia Pacific Software Development Center 2/F, Unit A, Information Center Zhongguancun Software Park Haidian District, Beijing, P.R.China (100094) Tel: +86-10-82825151 - 523 Fax: +86-10-82825210 Email: ning.jiang@iona.com