cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Saul Goode (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (CXF-2420) Passing an object to the server doesn't work correctly
Date Mon, 14 Sep 2009 19:52:57 GMT

    [ https://issues.apache.org/jira/browse/CXF-2420?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12755154#action_12755154
] 

Saul Goode edited comment on CXF-2420 at 9/14/09 12:51 PM:
-----------------------------------------------------------

The GreeterData Interface doesn't exactly apply to my case, since it doesn't contain a method
with arguments.

But I found a workaround: I just use the implementation class directly.

In the Greeter demo this would mean, changing the greetMe method signature from greetMe(GreeterData)
to greetMe(GreeterDataImpl). Of course one has to move the implementation class to the interface
package, so that it's available on both sides. Afterwards you can also add methods which take
arguments to GreeterDataImpl and use them on the server-side.

(see also http://www.nabble.com/-DOSGi--Server-side-proxy-doesn%27t-work-correctly-tt25365318.html#a25387905
)

      was (Author: saulgoode):
    The GreeterData Interface doesn't exactly apply to my case, since it doesn't contain a
method with arguments.

But I found a workaround: I just use the implementation class directly.

In the Greeter demo this would mean, changing the greetMe method signature from greetMe(GreeterData)
to greetMe(GreeterDataImpl). Of course one has to move the implementation class to the interface
package, so that it's available on both sides. Afterwards you can also add methods which take
arguments to GreeterDataImpl and use them on the server-side.

(see also http://www.nabble.com/-DOSGi--Server-side-proxy-doesn%27t-work-correctly-tt25365318.html#a25387905)
  
> Passing an object to the server doesn't work correctly
> ------------------------------------------------------
>
>                 Key: CXF-2420
>                 URL: https://issues.apache.org/jira/browse/CXF-2420
>             Project: CXF
>          Issue Type: Bug
>          Components: Aegis Databinding
>    Affects Versions: dOSGi-1.0, dOSGi-1.1
>         Environment: OS: Linux Debian Lenny
> Java: Sun JDK 1.6.0 Update 13
> OSGi: Equinox 3.5.0.v20090520
> CXF/DOSGi: Single Bundle Distribution 1.0/1.1.SNAPSHOT
>            Reporter: Saul Goode
>         Attachments: PassObjectClient_1.0.0.tryout.jar, PassObjectInterface_1.0.0.tryout.jar,
PassObjectServer_1.0.0.tryout.jar
>
>
> I've got a Service PassObject exposed by CXF/DOSGi running on the server. This service
contains a method passAnObject which receives an object of type MathHelper. MathHelper is
an interface known both to the server and client. The method passAnObject calls the methods
MathHelper.getName() and MathHelper.isGreaterThanZero(int) on the received object. When the
client calls the method passAnObject and passes an object which implements MathHelper the
following happens: The call to getName works as expected and returns a String. But the call
to the other method raises an exception on the server (stack trace appended). I have this
problem with both 1.0 and the 1.1.SNAPSHOT.
> Is it unsupported to pass objects to a remote service provider? Or is this some kind
of bug?
> I didn't find an option to upload sth, so I uploaded the sample code to: http://ul.to/4vlftz
> The archive contains the server, client and interface bundles. The interface bundle runs
on both the server and client.
> Server-side Exception output by OSGi with Single Bundle Distribution 1.0:
> 02.09.2009 17:29:10 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Application has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: isGreaterZero is not delegated.
>         at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:148)
>         at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:114)
>         at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:68)
>         at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:57)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
>         at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:95)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
>         at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:89)
>         at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:302)
>         at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:265)
>         at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70)
>         at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
>         at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
>         at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>         at org.mortbay.jetty.Server.handle(Server.java:324)
>         at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
>         at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
>         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
>         at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
>         at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
>         at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
>         at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
> Caused by: java.lang.IllegalAccessError: isGreaterZero is not delegated.
>         at org.apache.cxf.aegis.type.basic.InterfaceInvocationHandler.invoke(InterfaceInvocationHandler.java:57)
>         at $Proxy33.isGreaterZero(Unknown Source)
>         at passobject.impl.PassObjectImpl.passAnObject(PassObjectImpl.java:10)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:166)
>         at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:82)
>         ... 23 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message