You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by David Haney <ha...@roguewave.com> on 2007/07/13 02:56:02 UTC

[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: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org


RE: [SCA Java] Using complex types in the helloworld-ws-reference example

Posted by David Haney <ha...@roguewave.com>.
Thanks Raymond,

I filed TUSCANY-1432 for this issue and attached my test case.

Thanks.

David.

> -----Original Message-----
> From: Raymond Feng [mailto:enjoyjava@gmail.com]
> Sent: Thursday, July 12, 2007 6:16 PM
> To: tuscany-user@ws.apache.org
> 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" <ha...@roguewave.com>
> To: <tu...@ws.apache.org>
> 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: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org


Re: [SCA Java] Using complex types in the helloworld-ws-reference example

Posted by Raymond Feng <en...@gmail.com>.
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" <ha...@roguewave.com>
To: <tu...@ws.apache.org>
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: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org