Raymond Feng wrote:
Hi,

I checked in a fix into trunk for TUSCANY-2220 under r647623. I'll let you to decide if you want to merge it into 1.2 branch.

Thanks, Raymond.  I tried this on my test case and it worked OK.

  Simon

Thanks,
Raymond

--------------------------------------------------
From: "Luciano Resende" <[EMAIL PROTECTED]>
Sent: Sunday, April 13, 2008 12:05 PM
To: <tuscany-dev@ws.apache.org>
Subject: Re: Problems with wsdl2java

Hi Simon

  Are we close to a fix to this issue ?

- Luciano

On Sun, Apr 13, 2008 at 10:19 AM, Simon Nash <[EMAIL PROTECTED]> wrote:
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]





--
Luciano Resende
Apache Tuscany Committer
http://people.apache.org/~lresende
http://lresende.blogspot.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to