You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by fa...@br.ibm.com on 2010/08/09 21:17:31 UTC
DOJO and Tuscany 2.0
Hi ,
I could develop a simple service in Tuscany 2.0, but I'm trying to reach
it trough a DOJO javascript application, this service uses a JSON-RPC
binding..
I'd like to know if there's some sample like this in the web site, could
you pass me the link?
or if someone has developed something like this and wants to share...
Thanks & Regards,
____________________________________________
Re: DOJO and Tuscany 2.0
Posted by Simon Laws <si...@googlemail.com>.
Hi Fabiano
I added a new sample which packages the Calculator as a WAR and calls if
from Javascript using DOJO. It seems to work in this simple same so I need
you to take a look and see how this differs from your example.
Take a look at the code here [1]. If you check this out of subversion you
should be able to build it using the "mvn" command. The resulting war can be
found in the target directory. You can deploy this directly to you container
and point your browser at...
http://localhost:8080/sample-contribution-binding-jsonrpc-calculator-webapp/
If you want to load it into eclipse then use "mvn eclipse:eclipse" which
will generate the eclipse project files for you.
Let me know how you get on.
[1]
http://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/samples/binding-jsonrpc/contribution-calculator-webapp/
Regards
Simon
--
Apache Tuscany committer: tuscany.apache.org
Co-author of a book about Tuscany and SCA: tuscanyinaction.com
OSGi implementation
Posted by Alexander Blotny <Al...@fokus.fraunhofer.de>.
Hi,
I am just experimenting a little bit with the implementation.osgi stuff
taking some samples as start...
I would like to have the following scenario. Two bundles are started in the
OSGi framework and are registered in for SCA. One bundle is consuming a
service that is implemented by the other bundle. I do not get an idea how
this can be done or maybe it is not possible.
So from the samples I have an OSGI-INF/sca folder with a bundle.composite
and a bundle.componentType file.
bundle.composite:
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://calculator.dosgi"
name="SMSComposite">
<component name="SMSComponent">
<tuscany:implementation.osgi
bundleSymbolicName="DeveloperGardenSDK.SMS" bundleVersion="0.0.1" />
<service name="smsService">
<binding.ws uri="http://localhost:8082/SMSService"/>
</service>
</component>
</composite>
bundle.componentType:
<componentType xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1">
<service name="smsService">
<interface.java
interface="de.fhg.fokus.ngni.xposer.see.developergarden.sms.SMS"/>
</service>
</componentType>
Furthermore the service is registered in the Activator class. The
registration is working and I am also able to consume the service via SOAP.
Now I want to have a second bundle that is able to consume the service.
Following files are created:
bundle.composite:
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://calculator.dosgi"
name="ReminderComposite">
<component name="ReminderComponent">
<tuscany:implementation.osgi bundleSymbolicName="Reminder_SCA"
bundleVersion="1.0" />
<service name="ReminderService">
<binding.ws uri="http://localhost:8082/ReminderService"/>
</service>
<reference name="smsService">
<binding.ws uri="http://localhost:8082/SMSService"/>
</reference>
</component>
</composite>
bundle.componentType:
<componentType xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1">
<service name="ReminderService">
<interface.java
interface="de.fhg.fokus.ngni.xposer.see.service.sca.reminder.ReminderService
"/>
</service>
<reference name="smsService">
<interface.java
interface="de.fhg.fokus.ngni.xposer.see.developergarden.sms.SMS"/>
</reference>
</componentType>
Again this service is registered via the Activator class. How I am getting
now the SMS service in the Java Code? I tried some things I have found in
other samples.
So the ReminderService implementation looks like that:
public class ReminderServiceImpl implements ReminderService { private
SMS smsService; @Reference public void setSmsService(SMS
smsService){ this.smsService = smsService; } @Override
public boolean startReminder(String user) { return
smsService.sendSMS("xy", "number", "Hallo", "Reminder"); } }
This structure is taken from another sample I looked at. The smsService is
null at this point.
I know that I could get the SMS service over OSGi reference stuff but I want
to use SCA stuff.
Please tell me if my scenario is wrong (or stupid) or if this is just not
working.
Thanks in advance.
greetings,
Alex
Re: DOJO and Tuscany 2.0
Posted by Brent Daniel <br...@gmail.com>.
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 <si...@googlemail.com>wrote:
>
>
> On Fri, Aug 13, 2010 at 5:25 AM, Brent Daniel <br...@gmail.com>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 <si...@googlemail.com>wrote:
>>
>>>
>>>
>>> On Thu, Aug 12, 2010 at 2:29 PM, <fa...@br.ibm.com> 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":"fabianoa@br.ib.mcom","firstName":"","lastName":"Grunin"}],"method":"authenticate","id":1}
>>>>
>>>>
>>>> 2.0 - {"params":[{"intranetId":"fabianoa@br.ibm.com","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 <si...@googlemail.com>*
>>>>
>>>> 12/08/2010 10:07
>>>> To
>>>> Fabiano Amorim Oliveira/Brazil/IBM@IBMBR
>>>> cc
>>>> Subject
>>>> Re: DOJO and Tuscany 2.0
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Wed, Aug 11, 2010 at 8:33 PM, <*f...@br.ibm.com>>
>>>> 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 = "*ggrunin@us.ibm.com*<gg...@us.ibm.com>
>>>> ";
>>>> userProfile.firstName = "Galina";
>>>> userProfile.lastName = "Grunin";
>>>>
>>>> authenticationService.authenticate(userProfile)
>>>>
>>>> {"params":[{"intranetId":"*fabianoa@br.ibm.com* <fa...@br.ibm.com>
>>>> ","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.StringReader@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.StringReader@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.StringReader@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
>
Re: DOJO and Tuscany 2.0
Posted by Simon Laws <si...@googlemail.com>.
On Fri, Aug 13, 2010 at 5:25 AM, Brent Daniel <br...@gmail.com>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 <si...@googlemail.com>wrote:
>
>>
>>
>> On Thu, Aug 12, 2010 at 2:29 PM, <fa...@br.ibm.com> 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":"fabianoa@br.ib.mcom","firstName":"","lastName":"Grunin"}],"method":"authenticate","id":1}
>>>
>>>
>>> 2.0 - {"params":[{"intranetId":"fabianoa@br.ibm.com","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 <si...@googlemail.com>*
>>>
>>> 12/08/2010 10:07
>>> To
>>> Fabiano Amorim Oliveira/Brazil/IBM@IBMBR
>>> cc
>>> Subject
>>> Re: DOJO and Tuscany 2.0
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Wed, Aug 11, 2010 at 8:33 PM, <*f...@br.ibm.com>>
>>> 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 = "*ggrunin@us.ibm.com*<gg...@us.ibm.com>
>>> ";
>>> userProfile.firstName = "Galina";
>>> userProfile.lastName = "Grunin";
>>>
>>> authenticationService.authenticate(userProfile)
>>>
>>> {"params":[{"intranetId":"*fabianoa@br.ibm.com* <fa...@br.ibm.com>
>>> ","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.StringReader@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.StringReader@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.StringReader@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
Re: DOJO and Tuscany 2.0
Posted by Brent Daniel <br...@gmail.com>.
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 <si...@googlemail.com>wrote:
>
>
> On Thu, Aug 12, 2010 at 2:29 PM, <fa...@br.ibm.com> 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":"fabianoa@br.ib.mcom","firstName":"","lastName":"Grunin"}],"method":"authenticate","id":1}
>>
>>
>> 2.0 - {"params":[{"intranetId":"fabianoa@br.ibm.com","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 <si...@googlemail.com>*
>>
>> 12/08/2010 10:07
>> To
>> Fabiano Amorim Oliveira/Brazil/IBM@IBMBR
>> cc
>> Subject
>> Re: DOJO and Tuscany 2.0
>>
>>
>>
>>
>>
>>
>> On Wed, Aug 11, 2010 at 8:33 PM, <*f...@br.ibm.com>>
>> 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 = "*ggrunin@us.ibm.com*<gg...@us.ibm.com>
>> ";
>> userProfile.firstName = "Galina";
>> userProfile.lastName = "Grunin";
>>
>> authenticationService.authenticate(userProfile)
>>
>> {"params":[{"intranetId":"*fabianoa@br.ibm.com* <fa...@br.ibm.com>
>> ","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.StringReader@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.StringReader@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.StringReader@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
>
Re: DOJO and Tuscany 2.0
Posted by Simon Laws <si...@googlemail.com>.
On Thu, Aug 12, 2010 at 2:29 PM, <fa...@br.ibm.com> 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":"fabianoa@br.ib.mcom","firstName":"","lastName":"Grunin"}],"method":"authenticate","id":1}
>
>
> 2.0 - {"params":[{"intranetId":"fabianoa@br.ibm.com","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 <si...@googlemail.com>*
>
> 12/08/2010 10:07
> To
> Fabiano Amorim Oliveira/Brazil/IBM@IBMBR
> cc
> Subject
> Re: DOJO and Tuscany 2.0
>
>
>
>
>
>
> On Wed, Aug 11, 2010 at 8:33 PM, <*f...@br.ibm.com>>
> 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 = "*ggrunin@us.ibm.com*<gg...@us.ibm.com>
> ";
> userProfile.firstName = "Galina";
> userProfile.lastName = "Grunin";
>
> authenticationService.authenticate(userProfile)
>
> {"params":[{"intranetId":"*fabianoa@br.ibm.com* <fa...@br.ibm.com>
> ","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.StringReader@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.StringReader@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.StringReader@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
Re: DOJO and Tuscany 2.0
Posted by fa...@br.ibm.com.
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":"fabianoa@br.ib.mcom","firstName":"","lastName":"Grunin"}],"method":"authenticate","id":1}
2.0 -
{"params":[{"intranetId":"fabianoa@br.ibm.com","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 <si...@googlemail.com>
12/08/2010 10:07
To
Fabiano Amorim Oliveira/Brazil/IBM@IBMBR
cc
Subject
Re: DOJO and Tuscany 2.0
On Wed, Aug 11, 2010 at 8:33 PM, <fa...@br.ibm.com> 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
","methods":[{"name":"authenticate","parameters":[{"name":"param0","type":"STRING"}]},{"name":"logoutUser","parameters":[]}]}
var userProfile = new Object();
userProfile.intranetId = "ggrunin@us.ibm.com";
userProfile.firstName = "Galina";
userProfile.lastName = "Grunin";
authenticationService.authenticate(userProfile)
{"params":[{"intranetId":"fabianoa@br.ibm.com
","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.StringReader@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.StringReader@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.StringReader@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
Co-author of a book about Tuscany and SCA: tuscanyinaction.com
Re: DOJO and Tuscany 2.0
Posted by fa...@br.ibm.com.
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
","methods":[{"name":"authenticate","parameters":[{"name":"param0","type":"STRING"}]},{"name":"logoutUser","parameters":[]}]}
var userProfile = new Object();
userProfile.intranetId = "ggrunin@us.ibm.com";
userProfile.firstName = "Galina";
userProfile.lastName = "Grunin";
authenticationService.authenticate(userProfile)
{"params":[{"intranetId":"fabianoa@br.ibm.com","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.StringReader@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.StringReader@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.StringReader@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
Please consider the environment before printing this email P
Luciano Resende <lu...@gmail.com>
10/08/2010 08:59
Please respond to
user@tuscany.apache.org
To
Fabiano Amorim Oliveira/Brazil/IBM@IBMBR
cc
user@tuscany.apache.org
Subject
Re: DOJO and Tuscany 2.0
On Tue, Aug 10, 2010 at 7:07 AM, <fa...@br.ibm.com> wrote:
java.lang.NoClassDefFoundError:
org/codehaus/jackson/map/AnnotationIntrospector
It looks like you are still missing some dependencies... best would be to
go to a working sample, do a mvn dependency:copy-dependencies and check
what jars you have missing.
--
Luciano Resende
http://people.apache.org/~lresende
http://twitter.com/lresende1975
http://lresende.blogspot.com/
Re: DOJO and Tuscany 2.0
Posted by Luciano Resende <lu...@gmail.com>.
On Tue, Aug 10, 2010 at 7:07 AM, <fa...@br.ibm.com> wrote:
> java.lang.NoClassDefFoundError:
> org/codehaus/jackson/map/AnnotationIntrospector
It looks like you are still missing some dependencies... best would be to go
to a working sample, do a mvn dependency:copy-dependencies and check what
jars you have missing.
--
Luciano Resende
http://people.apache.org/~lresende
http://twitter.com/lresende1975
http://lresende.blogspot.com/
Re: DOJO and Tuscany 2.0
Posted by fa...@br.ibm.com.
Thanks for answering my last e-mail.
I did the sample according to the link sent, I could get the SMD url
working successfully for that service.
Initially when I executed for the first time, I got from the console of
fire bug a messaging regarding the databinding which was missing the jar:
jettison-1.2.jar.
After adding the jettison jar I added the following jars into the
WEB-INF/lib folder:
tuscany-core-databinding-2.0-M5.jar
tuscany-databinding-2.0-M5.jar
tuscany-databinding-json-2.0-M5.jar
Now when I submit the request in the DOJO code
authenticationService.authenticate(userProfile);
the Firebug console points to an error related withe tuscany :
{"id":1,"error":{"trace":"java.lang.IllegalStateException:
java.lang.reflect.InvocationTargetException\r\n\tat
org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.getTransformer(DefaultTransformerExtensionPoint.java:190)\r\n\tat
org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.transform(DefaultTransformerExtensionPoint.java:209)\r\n\tat
org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:116)\r\n\tat
org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:240)\r\n\tat
org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:45)\r\n\tat
org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.transform(DefaultTransformerExtensionPoint.java:209)\r\n\tat
org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:116)\r\n\tat
org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediateInput(MediatorImpl.java:436)\r\n\tat
org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:64)\r\n\tat
org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleJSONRPCMethodInvocation(JSONRPCServiceServlet.java:307)\r\n\tat
org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleServiceRequest(JSONRPCServiceServlet.java:177)\r\n\tat
org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.service(JSONRPCServiceServlet.java:96)\r\n\tat
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)\r\n\tat
org.apache.tuscany.sca.host.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:110)\r\n\tat
org.apache.tuscany.sca.host.webapp.TuscanyServletFilter.doFilter(TuscanyServletFilter.java:94)\r\n\tat
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)\r\n\tat
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)\r\n\tat
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)\r\n\tat
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)\r\n\tat
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)\r\n\tat
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)\r\n\tat
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)\r\n\tat
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)\r\n\tat
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:837)\r\n\tat
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)\r\n\tat
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)\r\n\tat
java.lang.Thread.run(Thread.java:619)\r\nCaused by:
java.lang.reflect.InvocationTargetException\r\n\tat
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)\r\n\tat
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)\r\n\tat
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)\r\n\tat
java.lang.reflect.Constructor.newInstance(Constructor.java:513)\r\n\tat
org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.getTransformer(DefaultTransformerExtensionPoint.java:183)\r\n\t...
26 more\r\nCaused by: java.lang.NoClassDefFoundError:
org/codehaus/jackson/map/AnnotationIntrospector\r\n\tat
org.apache.tuscany.sca.databinding.json.jackson.JSON2Object.<init>(JSON2Object.java:41)\r\n\t...
31 more\r\nCaused by: java.lang.ClassNotFoundException:
org.codehaus.jackson.map.AnnotationIntrospector\r\n\tat
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1386)\r\n\tat
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232)\r\n\t...
32
more\r\n","code":490,"msg":"java.lang.reflect.InvocationTargetException"}}
Please consider the environment before printing this email P
Luciano Resende <lu...@gmail.com>
09/08/2010 17:55
Please respond to
user@tuscany.apache.org
To
Fabiano Amorim Oliveira/Brazil/IBM@IBMBR
cc
user@tuscany.apache.org
Subject
Re: DOJO and Tuscany 2.0
On Mon, Aug 9, 2010 at 12:36 PM, <fa...@br.ibm.com> wrote:
Thanks for your answer,
But I just would like to confirm if these samples will work with service
deployed in a Tuscany 2.0 code since that in the URL it refers to a 1.x
Thanks & Regards,
The pure dojo portion is independent of Tuscany and would work on both 1.x
or 2.x using DOJO native support for JSON-RPC and passing the Service URI
with ?smd on it's initialization :
var helloWorldService = new dojo.rpc.JsonService("HelloWorldService?smd");
--
Luciano Resende
http://people.apache.org/~lresende
http://twitter.com/lresende1975
http://lresende.blogspot.com/
Re: DOJO and Tuscany 2.0
Posted by Luciano Resende <lu...@gmail.com>.
On Mon, Aug 9, 2010 at 12:36 PM, <fa...@br.ibm.com> wrote:
>
>
> Thanks for your answer,
>
> But I just would like to confirm if these samples will work with service
> deployed in a Tuscany 2.0 code since that in the URL it refers to a *1.x*
>
>
> Thanks & Regards,*
> *
>
>
>
The pure dojo portion is independent of Tuscany and would work on both 1.x
or 2.x using DOJO native support for JSON-RPC and passing the Service URI
with ?smd on it's initialization :
var helloWorldService = new dojo.rpc.JsonService("HelloWorldService?smd");
--
Luciano Resende
http://people.apache.org/~lresende
http://twitter.com/lresende1975
http://lresende.blogspot.com/
Re: DOJO and Tuscany 2.0
Posted by fa...@br.ibm.com.
Thanks for your answer,
But I just would like to confirm if these samples will work with service
deployed in a Tuscany 2.0 code since that in the URL it refers to a 1.x
Thanks & Regards,
Luciano Resende <lu...@gmail.com>
09/08/2010 16:28
Please respond to
user@tuscany.apache.org
To
user@tuscany.apache.org
cc
Subject
Re: DOJO and Tuscany 2.0
On Mon, Aug 9, 2010 at 12:17 PM, <fa...@br.ibm.com> wrote:
>
> Hi ,
>
>
> I could develop a simple service in Tuscany 2.0, but I'm trying to reach
it
> trough a DOJO javascript application, this service uses a JSON-RPC
binding..
>
> I'd like to know if there's some sample like this in the web site, could
you
> pass me the link?
>
> or if someone has developed something like this and wants to share...
>
>
https://svn.apache.org/repos/asf/tuscany/sca-java-1.x/trunk/samples/helloworld-dojo-webapp/
https://svn.apache.org/repos/asf/tuscany/sandbox/lresende/sca-1.x/samples/store-secure-webapp/
--
Luciano Resende
http://people.apache.org/~lresende
http://twitter.com/lresende1975
http://lresende.blogspot.com/
Re: DOJO and Tuscany 2.0
Posted by Luciano Resende <lu...@gmail.com>.
On Mon, Aug 9, 2010 at 12:17 PM, <fa...@br.ibm.com> wrote:
>
> Hi ,
>
>
> I could develop a simple service in Tuscany 2.0, but I'm trying to reach it
> trough a DOJO javascript application, this service uses a JSON-RPC binding..
>
> I'd like to know if there's some sample like this in the web site, could you
> pass me the link?
>
> or if someone has developed something like this and wants to share...
>
>
https://svn.apache.org/repos/asf/tuscany/sca-java-1.x/trunk/samples/helloworld-dojo-webapp/
https://svn.apache.org/repos/asf/tuscany/sandbox/lresende/sca-1.x/samples/store-secure-webapp/
--
Luciano Resende
http://people.apache.org/~lresende
http://twitter.com/lresende1975
http://lresende.blogspot.com/