Thanks Raymond, I filed TUSCANY-1432 for this issue and attached my test case.
Thanks. David. > -----Original Message----- > From: Raymond Feng [mailto:[EMAIL PROTECTED] > Sent: Thursday, July 12, 2007 6:16 PM > To: [email protected] > Subject: Re: [SCA Java] Using complex types in the helloworld-ws-reference > example > > Hi, David. > > It seems that you're doing the right steps. If you can attach your test > case > into a JIRA, we can look into it. > > Thanks, > Raymond > > ----- Original Message ----- > From: "David Haney" <[EMAIL PROTECTED]> > To: <[email protected]> > Sent: Thursday, July 12, 2007 5:56 PM > Subject: [SCA Java] Using complex types in the helloworld-ws-reference > example > > > Hi all, > > I'm attempting to modify the helloworld-ws-reference example so that it > is sending a complexType instead of simple types, and am having trouble > with an exception that I can't explain. I wasn't able to find an > example of this sort of thing in one of the other samples, so I've been > trying to piece together the necessary changes, and I'm guessing I've > just missed a step along the way. > > Here's what I've done so far (all file references are relative to > <installdir>/samples/helloworld-ws-reference): > > - Modified the src/main/resources/wsdl/helloworld.wsdl So that the > getGreetings operation contains a complexType: > > ... > > <element name="getGreetings"> > <complexType> > <sequence> > <element name="name" type="tns:Name"/> > </sequence> > </complexType> > </element> > > ... > > <complexType name="Name"> > <sequence> > <element name="first" type="xsd:string"/> > <element name="last" type="xsd:string"/> > </sequence> > </complexType> > > ... > > - Next, I code-generated the static SDO types based on the updated WSDL > file. I added the following to the root build.xml in order to generate > the types (I wasn't able to find the necessary code-generator tools in > the SCA distribution, so the following depends on an external SDO > distribution specified by the environment variable TUSCANY_SDO. I used > the tuscany-sdo-1.0-incubating-beta1 binary distribution for this test): > > ... > > <property environment="env"/> > > <target name="codegen" depends="init"> > <java classname="org.apache.tuscany.sdo.generate.XSD2JavaGenerator" > fork="true"> > <classpath> > <pathelement > path="${env.TUSCANY_SDO}/lib/tuscany-sdo-tools-1.0-incubating-beta1.jar" > /> > <pathelement path="${env.TUSCANY_SDO}/lib/common-2.2.2.jar"/> > <pathelement path="${env.TUSCANY_SDO}/lib/ecore-2.2.2.jar"/> > <pathelement > path="${env.TUSCANY_SDO}/lib/sdo-api-r2.1-1.0-incubating-beta1.jar"/> > <pathelement > path="${env.TUSCANY_SDO}/lib/tuscany-sdo-impl-1.0-incubating-beta1.jar"/ > > > <pathelement path="${env.TUSCANY_SDO}/lib/ecore-xmi-2.2.2.jar"/> > <pathelement path="${env.TUSCANY_SDO}/lib/xsd-2.2.2.jar"/> > <pathelement > path="${env.TUSCANY_SDO}/lib/ecore-change-2.2.2.jar"/> > <pathelement path="${env.TUSCANY_SDO}/lib/codegen-2.2.2.jar"/> > <pathelement > path="${env.TUSCANY_SDO}/lib/codegen-ecore-2.2.2.jar"/> > </classpath> > <arg value="-targetDirectory"/> > <arg value="src/main/java"/> > <arg value="-javapackage"/> > <arg value="helloworld"/> > <arg value="src/main/resources/wsdl/helloworld.wsdl"/> > </java> > </target> > > ... > > > - This produced the following files in src/main/java/helloworld: > > getGreetings.java > getGreetingsResponse.java > HelloworldFactory.java > Name.java > impl/getGreetingsImpl.java > impl/getGreetingsResponseImpl.java > impl/HelloworldFactoryImpl.java > impl/NameImpl.java > > - Once these were in place, I modified HelloWorldService::getGreetings() > to take the new Name type: > > ... > > public interface HelloWorldService { > public String getGreetings(Name name); > } > > - and modified HelloWorldServiceComponent::getGreeting() to match: > > ... > public String getGreetings(Name name) { > System.out.println("Called getGreetings"); > return helloWorldService.getGreetings(name); > } > > - Finally, I modified HelloWorldServiceClient::main() to create a Name > instance, and pass it into the getGreetings() call. > > ... > > Name name = HelloworldFactory.INSTANCE.createName(); > > name.setFirst("David"); > name.setLast("Haney"); > > String value = helloWorldService.getGreetings(name); > > ... > > - Once all of the code changes were in place, I went back to the > src/main/resources/helloworldws.composite file, and attempted to update > it so that it would recognize that it should be using the SDO binding: > > <dbsdo:import.sdo > xmlns:dbsdo="http://tuscany.apache.org/xmlns/sca/databinding/sdo/1.0" > factory="helloworld.HelloworldFactory"/> > > > - That seemed like it should be sufficient based on the > documentation/tests/demos/examples that I was able to find, however when > I attempt to run the application, I'm seeing the following output: > > Buildfile: build.xml > > run: > [java] log4j:WARN No appenders could be found for logger > (org.apache.axiom.om.util.StAXUtils). > [java] log4j:WARN Please initialize the log4j system properly. > [java] Injected helloWorldService > [java] Called getGreetings > [java] Exception in thread "main" org.apache.axiom.om.OMException: > java.util.NoSuchElementException: End of stream has reached. > [java] at > org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:2 > 11) > [java] at > org.apache.axiom.om.impl.llom.OMElementImpl.buildNext(OMElementImpl.java > :546) > [java] at > org.apache.axiom.om.impl.llom.OMSourcedElementImpl.buildNext(OMSourcedEl > ementImpl.java:744) > [java] at > org.apache.axiom.om.impl.llom.OMElementImpl.getFirstOMChild(OMElementImp > l.java:557) > [java] at > org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getFirstOMChild(OMSou > rcedElementImpl.java:736) > [java] at > org.apache.axiom.om.impl.llom.OMNavigator._getFirstChild(OMNavigator.jav > a:138) > [java] at > org.apache.axiom.om.impl.llom.OMNavigator.updateNextNode(OMNavigator.jav > a:110) > [java] at > org.apache.axiom.om.impl.llom.OMNavigator.next(OMNavigator.java:93) > [java] at > org.apache.axiom.om.impl.llom.OMStAXWrapper.<init>(OMStAXWrapper.java:17 > 1) > [java] at > org.apache.axiom.om.impl.llom.OMElementImpl.getXMLStreamReader(OMElement > Impl.java:649) > [java] at > org.apache.axiom.om.impl.llom.OMElementImpl.getXMLStreamReaderWithoutCac > hing(OMElementImpl.java:628) > [java] at > org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getXMLStreamReaderWit > houtCaching(OMSourcedElementImpl.java:386) > [java] at > org.apache.axiom.om.impl.util.OMSerializerUtil.serializeByPullStream(OMS > erializerUtil.java:488) > [java] at > org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementI > mpl.java:783) > [java] at > org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume( > OMElementImpl.java:808) > [java] at > org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementI > mpl.java:779) > [java] at > org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume( > OMElementImpl.java:808) > [java] at > org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOA > PEnvelopeImpl.java:234) > [java] at > org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPE > nvelopeImpl.java:222) > [java] at > org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume( > OMElementImpl.java:808) > [java] at > org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl. > java:418) > [java] at > org.apache.axis2.transport.http.SOAPMessageFormatter.getBytes(SOAPMessag > eFormatter.java:77) > [java] at > org.apache.axis2.transport.http.AxisRequestEntity.getContentLength(AxisR > equestEntity.java:109) > [java] at > org.apache.commons.httpclient.methods.EntityEnclosingMethod.getRequestCo > ntentLength(EntityEnclosingMethod.java:332) > [java] at > org.apache.commons.httpclient.methods.EntityEnclosingMethod.addContentLe > ngthRequestHeader(EntityEnclosingMethod.java:402) > [java] at > org.apache.commons.httpclient.methods.EntityEnclosingMethod.addRequestHe > aders(EntityEnclosingMethod.java:370) > [java] at > org.apache.commons.httpclient.HttpMethodBase.writeRequestHeaders(HttpMet > hodBase.java:2036) > [java] at > org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase > .java:1919) > [java] at > org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java > :993) > [java] at > org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMe > thodDirector.java:397) > [java] at > org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMetho > dDirector.java:170) > [java] at > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:3 > 96) > [java] at > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:3 > 46) > [java] at > org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(Abstrac > tHTTPSender.java:558) > [java] at > org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:1 > 76) > [java] at > org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:73) > [java] at > org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageW > ithCommons(CommonsHTTPTransportSender.java:305) > [java] at > org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(Common > sHTTPTransportSender.java:201) > [java] at > org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:452) > [java] at > org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOper > ation.java:330) > [java] at > org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisO > peration.java:294) > [java] at > org.apache.tuscany.sca.binding.axis2.Axis2BindingInvoker.invokeTarget(Ax > is2BindingInvoker.java:92) > [java] at > org.apache.tuscany.sca.binding.axis2.Axis2BindingInvoker.invoke(Axis2Bin > dingInvoker.java:71) > [java] at > org.apache.tuscany.core.databinding.wire.DataTransformationInteceptor.in > voke(DataTransformationInteceptor.java:68) > [java] at > org.apache.tuscany.sca.core.invocation.AbstractInvocationHandler.invoke( > AbstractInvocationHandler.java:84) > [java] at > org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKIn > vocationHandler.java:73) > [java] at $Proxy5.getGreetings(Unknown Source) > [java] at > helloworld.HelloWorldServiceComponent.getGreetings(HelloWorldServiceComp > onent.java:30) > [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > [java] at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav > a:39) > [java] at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor > Impl.java:25) > [java] at java.lang.reflect.Method.invoke(Method.java:585) > [java] at > org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker. > invokeTarget(JavaTargetInvoker.java:112) > [java] at > org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker. > invoke(JavaTargetInvoker.java:134) > [java] at > org.apache.tuscany.sca.implementation.java.invocation.PassByValueInvoker > .invoke(PassByValueInvoker.java:61) > [java] at > org.apache.tuscany.sca.implementation.java.invocation.TargetInvokerInvok > er.invoke(TargetInvokerInvoker.java:46) > [java] at > org.apache.tuscany.sca.core.invocation.AbstractInvocationHandler.invoke( > AbstractInvocationHandler.java:84) > [java] at > org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKIn > vocationHandler.java:73) > [java] at $Proxy5.getGreetings(Unknown Source) > [java] at > helloworld.HelloWorldClient.main(HelloWorldClient.java:42) > [java] Caused by: java.util.NoSuchElementException: End of stream > has reached. > [java] at > org.apache.tuscany.sdo.util.resource.XMLDocumentStreamReader.next(XMLDoc > umentStreamReader.java:88) > [java] at > org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:1 > 25) > [java] ... 59 more > > BUILD SUCCESSFUL > Total time: 2 seconds > > > I've attempted this on Windows using the tuscany-sca-0.90-incubating > binary distribution, as well as RC3 for the tuscany-sca-0.91-incubating > distribution, and am seeing the same exception from both. The example > is sending the data through a tcptunnel (so that I can see the > on-the-wire format), and it appears this is failing while generating the > message, since I'm not seeing any traffic on the wire. > > I'm at a loss on how to proceed, any suggestions would be appreciated. > If there's any other information would be helpful let me know. > > Thanks. > > David. > > > -- David Haney > -- Chief Architect, Hydra Products > -- Rogue Wave Software > -- http://www.roguewave.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]
