I agree this should be flagged.. It's a pretty mysterious failure otherwise. I'll open a JIRA.
Brent On Fri, Aug 13, 2010 at 2:07 AM, Simon Laws <[email protected]>wrote: > > > On Fri, Aug 13, 2010 at 5:25 AM, Brent Daniel <[email protected]>wrote: > >> The sample doesn't add the databinding to the chain because the AddService >> interface isn't marked with @Remotable. If you add that, it runs >> successfully. >> >> In the error from 1.4 below, it looks like the JSON databinding may not be >> getting loaded. Is the tuscany-databinding-json JAR file on your classpath? >> >> Brent >> >> On Thu, Aug 12, 2010 at 9:29 AM, Simon Laws <[email protected]>wrote: >> >>> >>> >>> On Thu, Aug 12, 2010 at 2:29 PM, <[email protected]> wrote: >>> >>>> >>>> >>>> Hi, >>>> >>>> I did a test with the same app running in tuscany 1.4, all the >>>> paramaters seems to be the same, including the SMD, and the JSON object >>>> from >>>> the URL >>>> >>>> 1.4 - >>>> {"SMDVersion":".1","objectName":"AuthenticationService","serviceType":"JSON-RPC","serviceURL":" >>>> http://localhost:8080/eed-sca-services/AuthenticationComponent/authentication >>>> ","methods":[{"name":"logoutUser","parameters":[]},{"name":"authenticate","parameters":[{"name":"param0","type":"STRING"}]}]} >>>> >>>> 2.0 - >>>> {"SMDVersion":".1","objectName":"AuthenticationService","serviceType":"JSON-RPC","serviceURL":" >>>> http://localhost:8080/eed-sca-sample-service/AuthenticationComponent/AuthenticationService/authentication >>>> ","methods":[{"name":"logoutUser","parameters":[]},{"name":"authenticate","parameters":[{"name":"param0","type":"STRING"}]}]} >>>> >>>> >>>> and the JSON Object: >>>> >>>> 1.4 >>>> {"params":[{"intranetId":"[email protected]","firstName":"","lastName":"Grunin"}],"method":"authenticate","id":1} >>>> >>>> >>>> 2.0 - >>>> {"params":[{"intranetId":"[email protected]","firstName":"","lastName":"Grunin"}],"method":"authenticate","id":1} >>>> >>>> >>>> >>>> >>>> The error message changed to : >>>> >>>> >>>> No path found for the transformation: JSON->java:complexType" >>>> >>>> org.apache.tuscany.sca.databinding.TransformationException: No path >>>> found for the transformation: JSON->java:complexType at >>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.getTransformerChain(MediatorImpl.java:197) >>>> at >>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:104) >>>> at >>>> org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:240) >>>> at >>>> org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:45) >>>> at >>>> org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.transform(DefaultTransformerExtensionPoint.java:209) >>>> at >>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:116) >>>> at >>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediateInput(MediatorImpl.java:436) >>>> at >>>> org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:64) >>>> at >>>> org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleJSONRPCMethodInvocation(JSONRPCServiceServlet.java:307) >>>> at >>>> org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleServiceRequest(JSONRPCServiceServlet.java:177) >>>> at >>>> org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.service(JSONRPCServiceServlet.java:96) >>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at >>>> org.apache.tuscany.sca.host.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:110) >>>> at >>>> org.apache.tuscany.sca.host.webapp.TuscanyServletFilter.doFilter(TuscanyServletFilter.java:94) >>>> at >>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) >>>> at >>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) >>>> at >>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) >>>> at >>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) >>>> at >>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) >>>> at >>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) >>>> at >>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) >>>> at >>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) >>>> at >>>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:837) >>>> at >>>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640) >>>> at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286) >>>> at java.lang.Thread.run(Thread.java:619) " >>>> >>>> >>>> >>>> >>>> >>>> *Simon Laws <[email protected]>* >>>> >>>> 12/08/2010 10:07 >>>> To >>>> Fabiano Amorim Oliveira/Brazil/i...@ibmbr >>>> cc >>>> Subject >>>> Re: DOJO and Tuscany 2.0 >>>> >>>> >>>> >>>> >>>> >>>> >>>> On Wed, Aug 11, 2010 at 8:33 PM, >>>> <*[email protected]*<[email protected]>> >>>> wrote: >>>> >>>> >>>> >>>> I could start the application without errors and executing a dojo sample >>>> base on what was provided. >>>> >>>> When executing a request for a json-rpc request : >>>> >>>> >>>> var authenticationService = new >>>> dojo.rpc.JsonService("AuthenticationComponent/AuthenticationService/authentication?smd"); >>>> the line above returns: >>>> {"SMDVersion":".1","objectName":"AuthenticationService","serviceType":"JSON-RPC","serviceURL":" >>>> * >>>> http://localhost:8080/eed-sca-sample-service/AuthenticationComponent/AuthenticationService/authentication >>>> *<http://localhost:8080/eed-sca-sample-service/AuthenticationComponent/AuthenticationService/authentication> >>>> ","methods":[{"name":"authenticate","parameters":[{"name":"param0","type":"STRING"}]},{"name":"logoutUser","parameters":[]}]} >>>> >>>> var userProfile = new Object(); >>>> userProfile.intranetId = "*[email protected]*<[email protected]> >>>> "; >>>> userProfile.firstName = "Galina"; >>>> userProfile.lastName = "Grunin"; >>>> >>>> authenticationService.authenticate(userProfile) >>>> >>>> {"params":[{"intranetId":"*[email protected]* <[email protected]> >>>> ","firstName":"Galina","lastName":"Grunin"}],"method":"authenticate","id":1} >>>> >>>> The userProfile object is translated into a json object as stated above. >>>> >>>> >>>> when executing the actual request it returns an error which I suspect is >>>> a internal databinding error >>>> >>>> error >>>> Object { trace="org.apache.tuscany.sca....ava:58)\r\n ... 27 more\r\n", >>>> more...} >>>> >>>> code >>>> 490 >>>> >>>> msg >>>> "org.codehaus.jackson.JsonParseException: Unexpected character ('U' >>>> (code 85)): expected a valid value (number, String, array, object, 'true', >>>> 'false' or 'null') at [Source: java.io.stringrea...@17fc253; line: 1, >>>> column: 2]" >>>> >>>> trace >>>> "org.apache.tuscany.sca.databinding.TransformationException: >>>> org.codehaus.jackson.JsonParseException: Unexpected character ('U' (code >>>> 85)): expected a valid value (number, String, array, object, 'true', >>>> 'false' >>>> or 'null') at [Source: java.io.stringrea...@17fc253; line: 1, column: >>>> 2] at >>>> org.apache.tuscany.sca.databinding.json.jackson.JSON2Object.transform(JSON2Object.java:61) >>>> at >>>> org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.transform(DefaultTransformerExtensionPoint.java:209) >>>> at >>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:116) >>>> at >>>> org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:240) >>>> at >>>> org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:45) >>>> at >>>> org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.transform(DefaultTransformerExtensionPoint.java:209) >>>> at >>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:116) >>>> at >>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediateInput(MediatorImpl.java:436) >>>> at >>>> org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:64) >>>> at >>>> org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:66) >>>> at >>>> org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleJSONRPCMethodInvocation(JSONRPCServiceServlet.java:307) >>>> at >>>> org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleServiceRequest(JSONRPCServiceServlet.java:177) >>>> at >>>> org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.service(JSONRPCServiceServlet.java:96) >>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at >>>> org.apache.tuscany.sca.host.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:110) >>>> at >>>> org.apache.tuscany.sca.host.webapp.TuscanyServletFilter.doFilter(TuscanyServletFilter.java:94) >>>> at >>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) >>>> at >>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) >>>> at >>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) >>>> at >>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) >>>> at >>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) >>>> at >>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) >>>> at >>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) >>>> at >>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) >>>> at >>>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:837) >>>> at >>>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640) >>>> at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286) >>>> at java.lang.Thread.run(Thread.java:619) Caused by: >>>> org.codehaus.jackson.JsonParseException: Unexpected character ('U' (code >>>> 85)): expected a valid value (number, String, array, object, 'true', >>>> 'false' >>>> or 'null') at [Source: java.io.stringrea...@17fc253; line: 1, column: >>>> 2] at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:943) >>>> at >>>> org.codehaus.jackson.impl.JsonParserBase._reportError(JsonParserBase.java:632) >>>> at >>>> org.codehaus.jackson.impl.JsonParserBase._reportUnexpectedChar(JsonParserBase.java:565) >>>> at >>>> org.codehaus.jackson.impl.ReaderBasedParser._handleUnexpectedValue(ReaderBasedParser.java:429) >>>> at >>>> org.codehaus.jackson.impl.ReaderBasedParser.nextToken(ReaderBasedParser.java:192) >>>> at >>>> org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:1625) >>>> at >>>> org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:1580) >>>> at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1130) >>>> at >>>> org.apache.tuscany.sca.databinding.json.jackson.JSON2Object.transform(JSON2Object.java:58) >>>> ... 27 more >>>> >>>> >>>> >>>> Hi Fabiano >>>> >>>> I'd first note that the input parameters that you report don't match the >>>> required parameters as defined in the SMD that you provide. Having said >>>> that >>>> that doesn't really explain why it's complaining about a "U" character as I >>>> can't obviously see a "U" character in what you've reported. What I would >>>> do >>>> to debug this is the following. >>>> >>>> 1. Make the parameters provided by the client match the parameters >>>> required by the server >>>> >>>> If this doesn't get you any further >>>> >>>> 2. trap the message on the wire with an HTTP sniffer to get a definitive >>>> view of what characters the client is actually sending >>>> 3. debug the jsonrpc binding to see what characters are presented as the >>>> array of message parameters added to the Tuscany message structure >>>> 4. debug the databinding transformer (from your stack >>>> org.apache.tuscany.sca.databinding.json.jackson.JSON2Object) to see what >>>> data the transformer is operating on. >>>> >>>> Doing a quick Google this doesn't seem to be an obvious issue with >>>> Jackson. >>>> >>>> Regards >>>> >>>> Simon >>>> >>>> -- >>>> Apache Tuscany committer: *tuscany.apache.org*<http://tuscany.apache.org/> >>>> Co-author of a book about Tuscany and SCA: >>>> *tuscanyinaction.com*<http://tuscanyinaction.com/> >>>> >>> >>> I created a simple JSONRPC sample for Tuscany based on the calculator >>> sample and made the add method take a complex type. This doesn't work >>> seemingly because the server is no applying a JSON databinding when it >>> should. The result it that it tries to call a Java method with a JSONObject >>> parameter. This doesn't lead to happiness. >>> >>> >>> Simon >>> -- >>> Apache Tuscany committer: tuscany.apache.org >>> Co-author of a book about Tuscany and SCA: tuscanyinaction.com >>> >> >> > Doh, well spotted Brent. I wonder if we can raise a warning when you try to > use a remote binding with a non-remote interface? > > > Simon > > -- > Apache Tuscany committer: tuscany.apache.org > Co-author of a book about Tuscany and SCA: tuscanyinaction.com >
