[
https://issues.apache.org/jira/browse/TUSCANY-1432?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12512562
]
David Haney commented on TUSCANY-1432:
--------------------------------------
1) I haven't been using the test case. I've been running the client
application via the "ant run" command.
2) I haven't implemented the server side at the moment. The client is sending
it's request to a proxy, and I'm mainly just attempting to verify that the SOAP
message is formatted correctly. Once I get the reference side working as
expected, I planned to modify the helloworld-ws-service to match.
Thanks for looking into this.
David.
> Unable to implement helloworld-ws-reference sample with complex types.
> ----------------------------------------------------------------------
>
> Key: TUSCANY-1432
> URL: https://issues.apache.org/jira/browse/TUSCANY-1432
> Project: Tuscany
> Issue Type: Bug
> Components: Java SCA Samples
> Affects Versions: Java-SCA-M2
> Environment: Windows XP, JDK 1.5.0_11-b03, ant 1.7.0
> Reporter: David Haney
> Attachments: helloworld-ws-reference.zip
>
>
> 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.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]