Hi Dr.
Jung,
Just a quick heads up on how I got on with the parameter
problem.
Basically I amended the jboss-net-ejb.xml.xdt xdoclet template to include
an extra xdoclet method tag @jboss-net:wsdd-operation.
I
stuck the following xdoclet code between the tags that generated the
allowed-methods parameter and the request flow parameter.
***************************************************************************
<XDtMethod:forAllMethods>
<XDtMethod:ifHasMethodTag tagName="jboss-net:wsdd-operation">
<operation name="<XDtEjbIntf:interfaceMethodName/>"<XDtMethod:ifHasMethodTag tagName='jboss-net:wsdd-operation' paramName='returnQName'> returnQName="<XDtMethod:methodTagValue tagName='jboss-net:wsdd-operation' paramName='returnQName'/>"</XDtMethod:ifHasMethodTag>>
<XDtParameter:forAllMethodParams>
<parameter name="<XDtParameter:methodParamName/>"/>
</XDtParameter:forAllMethodParams>
</operation>
</XDtMethod:ifHasMethodTag>
</XDtMethod:forAllMethods>
<requestFlow name="<XDtClass:classTagValue tagName='jboss-net:web-service' paramName='urn'/>Request">
<XDtMethod:ifHasMethodTag tagName="jboss-net:wsdd-operation">
<operation name="<XDtEjbIntf:interfaceMethodName/>"<XDtMethod:ifHasMethodTag tagName='jboss-net:wsdd-operation' paramName='returnQName'> returnQName="<XDtMethod:methodTagValue tagName='jboss-net:wsdd-operation' paramName='returnQName'/>"</XDtMethod:ifHasMethodTag>>
<XDtParameter:forAllMethodParams>
<parameter name="<XDtParameter:methodParamName/>"/>
</XDtParameter:forAllMethodParams>
</operation>
</XDtMethod:ifHasMethodTag>
</XDtMethod:forAllMethods>
<requestFlow name="<XDtClass:classTagValue tagName='jboss-net:web-service' paramName='urn'/>Request">
***************************************************************************
Then I placed the following tags over the method
for which I needed the actual parameter names.
* @jboss-net:wsdd-operation
*
returnQName="AppointmentDate"
public String makeAppointment(String MRN, String
specialist)
Running the ejbdoclet task produced the normal
web-service.xml along with this snippet.
<operation name="makeAppointment"
returnQName="AppointmentDate">
<parameter name="MRN"/>
<parameter name="specialist"/>
</operation>
<parameter name="MRN"/>
<parameter name="specialist"/>
</operation>
The axis wsdl generator produces the following
WSDL from this wsdd.
<wsdl:message
name="makeAppointmentRequest">
<wsdl:part name="MRN" type="xsd:string" />
<wsdl:part name="specialist" type="xsd:string" />
</wsdl:message>
<wsdl:part name="MRN" type="xsd:string" />
<wsdl:part name="specialist" type="xsd:string" />
</wsdl:message>
<wsdl:message
name="makeAppointmentResponse">
<wsdl:part name="AppointmentDate" type="xsd:string" />
</wsdl:message>
<wsdl:part name="AppointmentDate" type="xsd:string" />
</wsdl:message>
The wsdl generator must retrieve the part type from the
class itself as although you can supply it in the wsdd's operation tag, I didn't
as
it would have been rewritting code that was already
there.
I'm not sure if this is what you had in mind and in
fact the more I think about it maybe you meant for me to amend the axis code as
opposed to manipulating the xdoclet stuff.
Anyway I'd really appreciate your thoughts on this, any
glaring errors etc as I'm not the oldest hat to web-services and can't see
many of the obvious errors that will result from
this.
For example I've no idea how this would
handle types other than simple objects Strings Booleans i.e. yer basic
java.lang classes. I'm not sure if the axis generator will handle them or
what might happen. Maybe it's a bit narrow minded in that
it's only really applicable to ejbs?
Thanks,
Mark.
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jung , Dr. Christoph
Sent: 25 June 2003 14:24
To: '[EMAIL PROTECTED]'
Subject: AW: [JBoss-user] WSDL Part names within messages.
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jung , Dr. Christoph
Sent: 25 June 2003 14:24
To: '[EMAIL PROTECTED]'
Subject: AW: [JBoss-user] WSDL Part names within messages.
I would be quite interested in the results of your experiments given that we will rewrite EJBProvider for a more tightintegration with the jboss invocation stack.CGJ-----Ursprüngliche Nachricht-----
Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Gesendet: Mittwoch, 25. Juni 2003 14:43
An: [EMAIL PROTECTED]
Betreff: RE: [JBoss-user] WSDL Part names within messages.Hi Dr. Jung,I was hoping you'd get back to me. Thanks again. I think I'll have a look at the BCEL and XJavadoc option.Thanks very much for your help,Mark.-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jung , Dr. Christoph
Sent: 25 June 2003 07:36
To: '[EMAIL PROTECTED]'
Subject: AW: [JBoss-user] WSDL Part names within messages.Mark,Axis has several ways of annotating such meta-data to be used by the WSDL Emitter (which uses reflection and builtin naming rulesto build its default meta-data thats why the parameter names are so ugly).First the deployment descriptor itself, but in this case it does not leave you much options except giving a service name.You could also subclass the provider implementation (EJBProvider in this case) for preparing the WSDL emitter withadditional information, .e.g, doing the reflection via a different bytecode analyzer, such as BCEL or xjavadoc or ....What Ive also seen is the possibilty for some target beans (Im not sure for EJBProvider, but you should look in the Axis docu) toimplement a static method that will return the already prepared meta-data to the emitter.CGJ-----Ursprüngliche Nachricht-----
Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Gesendet: Dienstag, 24. Juni 2003 13:51
An: [EMAIL PROTECTED]
Betreff: [JBoss-user] WSDL Part names within messages.Hi folks,I'm exposing a few session beans as web services. In the generated WSDL the part names are given automatic names i.e. in0,in1 etc. I was wondering if there was anyway to be able to set these to the argument name presented in the session bean?i.e. I have a bean called FPGbean which has the following method signaturepublic double orderFPGTest(String mrn){::}The wsdl for this is described as<wsdl:part name="orderFPGTestReturn" type="xsd:double" /></wsdl:message><wsdl:part name="in0" type="xsd:string" /></wsdl:message>and as you can see the part name attribute for the Request is in0.
I'm hoping eventually to use a UDDIBrowser and some sort of DragNDrop functionality into an open source UMLsuite from which I will generate clients. I don't exactly need the names I suppose it would just mean I wouldn't have to worry about the parameters being in order as I added them to the call.Thanks,Mark.###########################################
This message has been scanned by F-Secure Anti-Virus for Microsoft Exchange.
For more information, connect to http://www.F-Secure.com/###########################################
This message has been scanned by F-Secure Anti-Virus for Microsoft Exchange.
For more information, connect to http://www.F-Secure.com/