One comment inline.
Simon
Simon Laws wrote:
> On Fri, Apr 11, 2008 at 7:51 AM, Dave Sowerby <[EMAIL PROTECTED]>
> wrote:
>
>
> > Hey Simon,
> >
> > Thanks for the response.
> >
> > Indeed this is a change in Tuscany behaviour - using the same service
> > running under 1.0-incubating or 1.1-incubating the WSDL generated is
> > as expected. This problem only appears to have started recently with
> > 1.2.
> >
> > Cheers,
> >
> > Dave.
> >
> > On Thu, Apr 10, 2008 at 10:40 PM, Simon Laws
> > <[EMAIL PROTECTED]>
> > wrote:
> >
> > > On Thu, Apr 10, 2008 at 12:29 PM, Dave Sowerby
<[EMAIL PROTECTED]>
> > > wrote:
> > >
> > >
> > >
> > > > Hi,
> > > >
> > > > I'm currently facing issues when attmepting to utilise the wsdl
> > > > generated by a service exposed using binding.ws, when I use
wsdl2java
> > > > with this wsdl I get the following exception:
> > > >
> > > > IWAB0399E Error in generating Java from WSDL:
> > > java.io.IOException:
> > > > Emitter failure. Cannot find endpoint address in port
> > > > ServiceRequestPortType__SOAPHTTPPort in service
> > > > ServiceRequestPortType__ServiceLocator
> > > > java.io.IOException: Emitter failure. Cannot find endpoint
> > > > address in port ServiceRequestPortType__SOAPHTTPPort in service
> > > > ServiceRequestPortType__ServiceLocator
> > > > at
> > > >
> > >
> >
org.apache.axis.wsdl.toJava.JavaServiceImplWriter.writeFileBody(JavaServiceImplWriter.java:189)
> >
> > > > at
> > >
> > org.apache.axis.wsdl.toJava.JavaWriter.generate(JavaWriter.java:127)
> >
> > > > at
> > > >
> > >
> >
org.apache.axis.wsdl.toJava.JavaServiceWriter.generate(JavaServiceWriter.java:112)
> >
> > > > at
> > > >
> > >
> >
org.apache.axis.wsdl.toJava.JavaGeneratorFactory$Writers.generate(JavaGeneratorFactory.java:421)
> >
> > > > at org.apache.axis.wsdl.gen.Parser.generate(Parser.java:476)
> > > > at org.apache.axis.wsdl.gen.Parser.access$000(Parser.java:45)
> > > > at
> > >
> > org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:362)
> >
> > > > at java.lang.Thread.run(Unknown Source)
> > > >
> > > > I've diffed a previously functioning wsdl against the currently
> > >
> > (RC3a)
> >
> > > > generated wsdl file, the difference causing this problem appears
> > > to
> > >
> > be
> >
> > > > the additional lines of:
> > > >
> > > > <wsdl:service name="ServiceRequestPortType__Service">
> > > > <wsdl:port name="ServiceRequestPortType__SOAPHTTPPort"
> > > > binding="ns2:ServiceRequestPortType__SOAPBinding">
> > > > </wsdl:port>
> > > > </wsdl:service>
> > > >
> > > > Which without an address is causing wsdl2java to fail.
> > > >
> > > > Has anyone seen this before? Or does anyone have any
> > > suggestions?
> > > >
> > > > Cheers,
> > > >
> > > > Dave.
> > > >
> > > > --
> > > > Dave Sowerby MEng MBCS
> > > >
> > > >
---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > >
> > > >
> > > Hi Dave
> > >
> > > I don't have an immediate suggestion so I'd like to understand if
this
> > >
> > is a
> >
> > > change in behavior in the Tuscany code that you are now seeing.
> > > I.e.
> > >
> > The
> >
> > > previously functioning WSDL that you diffed against. Was that also
> > >
> > generated
> >
> > > by Tuscany in the past? If so I'll go look at what changed and
> > > why.
> > >
> > > As an aside I saw a post from Simon Nash saying that he is looking
> > > at
> > >
> > the
> >
> > > WSDL generation story afresh so hopefully we can make this runtime
> > > vs
> > > development story much more consistent.
> > >
> > > Regards
> > >
> > > Simon
> > >
> > >
> >
> >
> > --
> > Dave Sowerby MEng MBCS
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
> Hi Dave
>
> I just ran up samples/helloworld-ws-sdo and retrieved the
> auto-generated
> wsdl by pointing my browser at
> http://l3aw203:8085/HelloWorldService?wsdl.
> I've pasted the result in at the end of this message. The bottom line
though
> is that I see the service/port with missing address information.
>
> <wsdl:service name="HelloWorld__Service">
> <wsdl:port name="HelloWorld__SOAPHTTPPort"
> binding="tns:HelloWorld__SOAPBinding">
> </wsdl:port>
> </wsdl:service>
>
>
> There are two issues in the code here but I'm going to need some help
> to
> determine a final fix
>
> Firstly there is code, for example, in
> Axis2ServiceClient.setServicePort
> that makes a decision about whether the binding definition in the
composite
> file references a service or just a portType.
>
> WSDLDefinitionHelper helper = new WSDLDefinitionHelper();
> if (wsBinding.getBinding() == null) {
> InterfaceContract ic =
> wsBinding.getBindingInterfaceContract();
> WSDLInterface wi = (WSDLInterface)ic.getInterface();
> Service service = helper.createService(wsdlDefinition,
> wi.getPortType());
> Port port =
(Port)service.getPorts().values().iterator().next();
> wsBinding.setService(service);
> wsBinding.setPort(port);
> wsBinding.setBinding(port.getBinding());
> } else {
> Service service = helper.createService(wsdlDefinition,
> wsBinding.getBinding());
> Port port =
(Port)service.getPorts().values().iterator().next();
> wsBinding.setService(service);
> wsBinding.setPort(port);
> }
>
> If it thinks the binding is null it goes ahead and adds a new binding,
> service and port. This is why you are seeing this extra information in
> the
> WSDL file. There should probably a test here to look at the WSDL
> interface
> and see if there is already a binding that will do the job.
>
>
This would be a worthwhile optimization, though not essential to fix
the immediate bug. The same approach could also be used to find a
service/port that will do the job, if these exist.
Simon
> Secondly, when it does go ahead and creates a service the code in
> WSDLDefinitionHelper.createPort() has some lines commented out...
>
> protected Port createPort(Definition definition, Binding binding,
> Service service) throws WSDLException {
> Port port = definition.createPort();
> port.setBinding(binding);
> configurePort(definition, port, binding);
> /*
> ExtensibilityElement soapAddress =
>
> definition.getExtensionRegistry().createExtension(Port.class,
> SOAP_ADDRESS);
> ((SOAPAddress)soapAddress).setLocationURI("");
> port.addExtensibilityElement(soapAddress);
> */
> service.addPort(port);
> return port;
>
> Which means that the port will not have address information. With this
code
> though even if it were active the location would be empty so there
> should
> probably be more logic to determine if the URI on the binding has been
> manually set and use the location from there.
>
> I welcome feedback on anyone who is familiar with this are in case
> there
is
> deeper thinking about the changes that have been made to this logic.
>
> Regards
>
> Simon
>
>
> ==========================================================
>
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions name="helloworld"
> targetNamespace="http://helloworld"
> xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:tns="http://helloworld">
> <wsdl:types>
> <schema elementFormDefault="qualified"
> targetNamespace="http://helloworld"
> xmlns="http://www.w3.org/2001/XMLSchema">
>
> <element name="getGreetings">
> <complexType>
> <sequence>
> <element name="name" type="tns:Name"/>
> </sequence>
>
> </complexType>
> </element>
>
> <element name="getGreetingsResponse">
> <complexType>
> <sequence>
> <element name="getGreetingsReturn"
type="xsd:string"/>
> </sequence>
> </complexType>
>
> </element>
>
> <complexType name="Name">
> <sequence>
> <element name="first" type="xsd:string"/>
> <element name="last" type="xsd:string"/>
> </sequence>
> </complexType>
>
> </schema>
>
> </wsdl:types>
> <wsdl:message name="getGreetingsResponse">
> <wsdl:part name="parameters" element="tns:getGreetingsResponse">
> </wsdl:part>
> </wsdl:message>
> <wsdl:message name="getGreetingsRequest">
> <wsdl:part name="parameters" element="tns:getGreetings">
> </wsdl:part>
> </wsdl:message>
>
> <wsdl:portType name="HelloWorld">
> <wsdl:operation name="getGreetings">
> <wsdl:input name="getGreetingsRequest"
message="tns:getGreetingsRequest">
> </wsdl:input>
> <wsdl:output name="getGreetingsResponse"
> message="tns:getGreetingsResponse">
> </wsdl:output>
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="HelloWorld__SOAPBinding" type="tns:HelloWorld">
>
> <wsdlsoap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
> <wsdl:operation name="getGreetings">
> <wsdlsoap:operation soapAction=""/>
> <wsdl:input name="getGreetingsRequest">
> <wsdlsoap:body use="literal"/>
> </wsdl:input>
> <wsdl:output name="getGreetingsResponse">
> <wsdlsoap:body use="literal"/>
> </wsdl:output>
>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="HelloWorldSoapBinding" type="tns:HelloWorld">
> <wsdlsoap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
> <wsdl:operation name="getGreetings">
> <wsdlsoap:operation soapAction=""/>
> <wsdl:input name="getGreetingsRequest">
> <wsdlsoap:body use="literal"/>
> </wsdl:input>
>
> <wsdl:output name="getGreetingsResponse">
> <wsdlsoap:body use="literal"/>
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="HelloWorld__Service">
> <wsdl:port name="HelloWorld__SOAPHTTPPort"
> binding="tns:HelloWorld__SOAPBinding">
> </wsdl:port>
> </wsdl:service>
>
> <wsdl:service name="HelloWorldService">
> <wsdl:port name="HelloWorldSoapPort"
binding="tns:HelloWorldSoapBinding">
> <wsdlsoap:address
location="http://192.168.247.1:8085/HelloWorldService"/>
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]