I got following exception in running where the wsdl defines an operation without input parameter.
java.lang.IllegalArgumentException: Pass-by-value is not supported for the given object at org.apache.tuscany.sca.databinding.javabeans.JavaBeansDataBinding.copy(JavaBeansDataBinding.java:102) at org.apache.tuscany.sca.databinding.DefaultDataBindingExtensionPoint$LazyDataBinding.copy(DefaultDataBindingExtensionPoint.java:171) at org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.copy(PassByValueInterceptor.java:235) at org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.copyFault(PassByValueInterceptor.java:130) at org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(PassByValueInterceptor.java:115) at org.apache.tuscany.sca.binding.sca.impl.SCABindingInvoker.invoke(SCABindingInvoker.java:61) at org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(PassByValueInterceptor.java:108) at org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:286) at org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:154) at $Proxy7.getB1Name(Unknown Source) at org.apache.tuscany.sca.vtest.wsbinding.nowsdl.NoWsdlTestCase.testNoWsdl(NoWsdlTestCase.java:62) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99) at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81) at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34) at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75) at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45) at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:75) at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:36) at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42) at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34) at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) Caused by: java.io.NotSerializableException: org.apache.axiom.om.impl.llom.OMElementImpl at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1113) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1467) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1439) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1382) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1111) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1467) at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:414) at java.lang.Throwable.writeObject(Throwable.java:320) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:972) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1431) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1382) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1111) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1467) at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:414) at java.lang.Throwable.writeObject(Throwable.java:320) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:972) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1431) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1382) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1111) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:325) at org.apache.tuscany.sca.databinding.javabeans.JavaBeansDataBinding.copy(JavaBeansDataBinding.java:71) ... 30 more See getName in attached wsdl. <wsdl:operation name="getName"> <wsdl:output message="tns:getNameResponse"></wsdl:output> </wsdl:operation> Is it a bug? Thanks Gilbert
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://vtest.wsbinding.nowsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="BService" targetNamespace="http://vtest.wsbinding.nowsdl"> <wsdl:types> <xsd:schema targetNamespace="http://vtest.wsbinding.nowsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="getString"> <xsd:complexType> <xsd:sequence> <xsd:element name="in" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="getStringResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="out" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="getString2"> <xsd:complexType> <xsd:sequence> <xsd:element name="in1" type="xsd:string"></xsd:element> <xsd:element name="in2" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="getString2Response"> <xsd:complexType> <xsd:sequence> <xsd:element name="out" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="getInt"> <xsd:complexType> <xsd:sequence> <xsd:element name="in" type="xsd:int"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="getIntResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="out" type="xsd:int"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="getName"> <xsd:complexType> <xsd:sequence> <xsd:element name="in" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="getNameResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="out" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="getStringRequest"> <wsdl:part element="tns:getString" name="parameters"/> </wsdl:message> <wsdl:message name="getStringResponse"> <wsdl:part element="tns:getStringResponse" name="parameters"/> </wsdl:message> <wsdl:message name="getString2Request"> <wsdl:part name="parameters" element="tns:getString2"></wsdl:part> </wsdl:message> <wsdl:message name="getString2Response"> <wsdl:part name="parameters" element="tns:getString2Response"></wsdl:part> </wsdl:message> <wsdl:message name="getIntRequest"> <wsdl:part name="parameters" element="tns:getInt"></wsdl:part> </wsdl:message> <wsdl:message name="getIntResponse"> <wsdl:part name="parameters" element="tns:getIntResponse"></wsdl:part> </wsdl:message> <wsdl:message name="getNameRequest"> <wsdl:part name="parameters" element="tns:getName"></wsdl:part> </wsdl:message> <wsdl:message name="getNameResponse"> <wsdl:part name="parameters" element="tns:getNameResponse"></wsdl:part> </wsdl:message> <wsdl:portType name="BService"> <wsdl:operation name="getString"> <wsdl:input message="tns:getStringRequest"/> <wsdl:output message="tns:getStringResponse"/> </wsdl:operation> <wsdl:operation name="getString2"> <wsdl:input message="tns:getString2Request"></wsdl:input> <wsdl:output message="tns:getString2Response"></wsdl:output> </wsdl:operation> <wsdl:operation name="getInt"> <wsdl:input message="tns:getIntRequest"></wsdl:input> <wsdl:output message="tns:getIntResponse"></wsdl:output> </wsdl:operation> <wsdl:operation name="getName"> <wsdl:output message="tns:getNameResponse"></wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="BServiceSOAP" type="tns:BService"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getString"> <soap:operation soapAction=""/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="BService"> <wsdl:port binding="tns:BServiceSOAP" name="BServiceSOAP"> <soap:address location="http://localhost:8080/BService"/> </wsdl:port> </wsdl:service> </wsdl:definitions>