Return-Path: Delivered-To: apmail-ws-axis-user-archive@www.apache.org Received: (qmail 70975 invoked from network); 15 Nov 2005 22:51:41 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 15 Nov 2005 22:51:41 -0000 Received: (qmail 35933 invoked by uid 500); 15 Nov 2005 22:51:32 -0000 Delivered-To: apmail-ws-axis-user-archive@ws.apache.org Received: (qmail 35924 invoked by uid 500); 15 Nov 2005 22:51:32 -0000 Mailing-List: contact axis-user-help@ws.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-user@ws.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list axis-user@ws.apache.org Received: (qmail 35912 invoked by uid 99); 15 Nov 2005 22:51:32 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 Nov 2005 14:51:32 -0800 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=HTML_00_10,HTML_MESSAGE,RCVD_IN_BL_SPAMCOP_NET,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: domain of gadams@gmail.com designates 66.249.82.192 as permitted sender) Received: from [66.249.82.192] (HELO xproxy.gmail.com) (66.249.82.192) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 Nov 2005 14:51:23 -0800 Received: by xproxy.gmail.com with SMTP id t15so1421485wxc for ; Tue, 15 Nov 2005 14:51:11 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type; b=Nm/25I+0T1jUWXzbuUinfRaMSrNMCQR7I/5SC8dXhbmSObIYWv7OXWfjnfYVvENAJNJ+QkmoPwGK/CcCexuAAeUP3Ai+CzCPCc04THve41EFAVTJAzvaxrhpQRpKHr9CkmsJg1rkU/KCWzlDdbL7nT+7jlpx8J9t8wglAezd8NA= Received: by 10.65.63.20 with SMTP id q20mr1437590qbk; Tue, 15 Nov 2005 14:51:09 -0800 (PST) Received: by 10.65.157.7 with HTTP; Tue, 15 Nov 2005 14:51:09 -0800 (PST) Message-ID: <4ab2246e0511151451w74dad9abs7eb1498bab1c3feb@mail.gmail.com> Date: Tue, 15 Nov 2005 14:51:09 -0800 From: Greg Adams To: axis-user@ws.apache.org Subject: SOAP Headers and WSDL MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_30355_21276168.1132095069399" X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N ------=_Part_30355_21276168.1132095069399 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline I'm attempting to create a set of web services that all use the same mechanism for statefulness: All client requests must include a state identification header, which consists of a couple of strings that I use on the server side to associate = a stateful set of resources with the request. The state identification header information is included in the response so that the client side code can associate the response with the appropriate context... I've implemented a Handler, extending from BasicHandler, which for a reques= t gets the state identification header information described above out of the soap header portion of the message, and places it in the MessageContext using MessageContext.setProperty(). For a response it does the reverse, getting the state identification header information out of the MessageContext and placing it in the SOAP header. With a Java client, I have no problems... I can use the JAX-RPC APIs to insert the required header information and everything works like clockwork. The problem is that the targeted client of the web services is going to be implemented in .Net. When I try to create a Web Reference in .Net, it creates a proxy from the WSDL, which contains no information about the required SOAP headers. To put it simply, I need the header information to be included in the WSDL generated by Axis. I still want to use a handler, but somehow have the header information "injected" into the WSDL. I found the following page: http://wiki.apache.org/ws/FrontPage/Axis/WSDLJavaHeaderWSDL, which describe= s 2 methods of getting header information to come out in the WSDL: 1. Identify parameters in the service interface methods with 'inHeader=3D"true"'. 2. Use the mystical, unknown method, Handler.generateWSDL to somehow get th= e header information to come out in the WSDL. #1 is impractical for my purposes, since it necessitates having the header elements declared as method parameters in the service interface. There will be thousands of services using whatever solution works, and forcing service developers to include pre-requisite header parameters and handle them in code is not going to go over well. #2 is the desired solution as far as I can see, since the handler would become a self-contained entity, that alters the behavior of the service it'= s handling, also altering the WSDL for the service to reflect what it does. I need some guidance on how to programmatically add the header information into the WSDL from Handler.generateWSDL or possibly, if there's a better wa= y to do this then I'd appreciate any thoughts. Greg ------=_Part_30355_21276168.1132095069399 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline I'm attempting to create a set of web services that all use the same mechan= ism for statefulness:

All client requests must include a state identification header, which consists of a couple of strings that I use on the server side to associate a stateful set of resources with the request. The state identification header information is included in the response so that the client side code can associate the response with the appropriate context...

I've implemented a Handler, extending from BasicHandler, which for a request gets the state identification header information described above out of the soap header portion of the message, and places it in the MessageContext using MessageContext.setProperty(). For a response it does the reverse, getting the state identification header information out of the MessageContext and placing it in the SOAP header.

With a Java client, I have no problems... I can use the JAX-RPC APIs to insert the required header information and everything works like clockwork. The problem is that the targeted client of the web services is going to be implemented in .Net. When I try to create a Web Reference in .Net, it creates a proxy from the WSDL, which contains no information about the required SOAP headers.

To put it simply, I need the header information to be included in the WSDL generated by Axis. I still want to use a handler, but somehow have the header information "injected" into the WSDL. I found the foll= owing page: http://wiki.apache.org/ws/FrontPage/Axis/WSDLJavaHeaderWSDL, which describes 2 methods of getting header information to come out in the WSDL:

1. Identify parameters in the service interface methods with 'inHeader=3D&q= uot;true"'.
2. Use the mystical, unknown method, Handler.generateWSDL to somehow get th= e header information to come out in the WSDL.

#1 is impractical for my purposes, since it necessitates having the header elements declared as method parameters in the service interface. There will be thousands of services using whatever solution works, and forcing service developers to include pre-requisite header parameters and handle them in code is not going to go over well.

#2 is the desired solution as far as I can see, since the handler would become a self-contained entity, that alters the behavior of the service it's handling, also altering the WSDL for the service to reflect what it does. I need some guidance on how to programmatically add the header information into the WSDL from Handler.generateWSDL or possibly, if there's a better way to do this then I'd appreciate any thoughts.

Greg
------=_Part_30355_21276168.1132095069399--