Hello Sergey, could you please check my screenshots of debugging? I uploaded them here:
Response to client @ place of call: https://docs.google.com/leaf?id=0BzVD18l494R1ZDZmNWNiMDQtYTQwNy00OTUzLThjNjItZmQ5MWI5NTkzOWU0&hl=hu (Here is where I expect variable 'ex' to be instanceof GreeterException, but it isnt) Response to client @ ServiceInvocationHandler: https://docs.google.com/leaf?id=0BzVD18l494R1OTY2OWMzNTAtNWFhNS00ZmI4LTk5YmItYmRlZGMxMjYzMmRh&hl=hu I wonder if these are correct. Thank you very much, András On Mon, Sep 26, 2011 at 1:29 PM, Sergey Beryozkin <[email protected]>wrote: > Please do, I'll be happy to apply a patch if you can find the cause of the > problem > > Cheers, Sergey > > On 26/09/11 12:24, András Liter wrote: > >> Hello Sergey, >> >> yes, when I debugged strange thing happened (at least to me :) ): >> ServiceInvocationHandler matched the exception from the server with the >> invoked method's ones and execution has stepped into the if clause (line >> 75), to throw theCause; >> But then the iteration ended normally and the exception at line 80 has >> been >> thrown instead of line 75. Kind of confusing, but I can carry on debugging >> at least :) >> >> On Mon, Sep 26, 2011 at 12:46 PM, Sergey Beryozkin<[email protected]** >> >wrote: >> >> Hi András >>> >>> I'm afraid I don't know the answer at the moment. >>> I agree that if an interface method declares a custom Exception then it >>> has >>> to be thrown - I'm not seeing the attachment - do you see in the debugger >>> if >>> ServiceInvocationHandler manages to match a Throwable instance to one of >>> the >>> exception classes in the map, before proceeding with throwing >>> ServiceException ? >>> >>> Cheers, Sergey >>> >>> >>> >>> On 26/09/11 11:16, András Liter wrote: >>> >>> Hello Sergey, >>>> >>>> thanks for the tips! >>>> >>>> I tried the Greeter sample as well, and in my environment its exception >>>> handling fails the same way I described before (the custom exception is >>>> declared, no compilation error, but then a runtime exception / error >>>> (execution stops :( )). >>>> >>>> I debugged this exception as well at the client side (for me it only >>>> shows that my custom exception is wrapped). I attached the variables >>>> scrrenshot anyway, and I've also attached the debugged variables at >>>> ServiceInvocationHandler's catch clause (exception_debugged_sih.png). >>>> Are these proper? >>>> >>>> Thanks, >>>> András >>>> >>>> On Mon, Sep 26, 2011 at 11:19 AM, Sergey Beryozkin<[email protected] >>>> <mailto:[email protected]>> wrote: >>>> >>>> Hi >>>> >>>> Here is the way it's handled on the client side: >>>> >>>> >>>> http://svn.apache.org/repos/__****asf/cxf/dosgi/trunk/dsw/cxf-**__**<http://svn.apache.org/repos/__**asf/cxf/dosgi/trunk/dsw/cxf-__**> >>>> dsw/src/main/java/org/apache/_****_cxf/dosgi/dsw/handlers/__** >>>> ServiceInvocationHandler.java<**http://svn.apache.org/repos/__** >>>> asf/cxf/dosgi/trunk/dsw/cxf-__**dsw/src/main/java/org/apache/_** >>>> _cxf/dosgi/dsw/handlers/__**ServiceInvocationHandler.java<http://svn.apache.org/repos/__asf/cxf/dosgi/trunk/dsw/cxf-__dsw/src/main/java/org/apache/__cxf/dosgi/dsw/handlers/__ServiceInvocationHandler.java> >>>> > >>>> >>>> <http://svn.apache.org/repos/****asf/cxf/dosgi/trunk/dsw/cxf-****<http://svn.apache.org/repos/**asf/cxf/dosgi/trunk/dsw/cxf-**> >>>> dsw/src/main/java/org/apache/****cxf/dosgi/dsw/handlers/** >>>> ServiceInvocationHandler.java<**http://svn.apache.org/repos/** >>>> asf/cxf/dosgi/trunk/dsw/cxf-**dsw/src/main/java/org/apache/** >>>> cxf/dosgi/dsw/handlers/**ServiceInvocationHandler.java<http://svn.apache.org/repos/asf/cxf/dosgi/trunk/dsw/cxf-dsw/src/main/java/org/apache/cxf/dosgi/dsw/handlers/ServiceInvocationHandler.java> >>>> > >>>> >>>>> >>>>> >>>> I don't recall if I was the last one who changed that code or if >>>> David was applying more changes afterwards. I suspect that was code >>>> was supposed to be compliant with the spec we were implementing at a >>>> time :-) >>>> >>>> Looking at this code: >>>> >>>> >>>> http://svn.apache.org/repos/__****asf/cxf/dosgi/trunk/samples/**__**<http://svn.apache.org/repos/__**asf/cxf/dosgi/trunk/samples/__**> >>>> greeter/client/src/main/java/_****_org/apache/cxf/dosgi/**samples/** >>>> __greeter/client/Activator.****java<http://svn.apache.org/** >>>> repos/__asf/cxf/dosgi/trunk/**samples/__greeter/client/src/** >>>> main/java/__org/apache/cxf/**dosgi/samples/__greeter/** >>>> client/Activator.java<http://svn.apache.org/repos/__asf/cxf/dosgi/trunk/samples/__greeter/client/src/main/java/__org/apache/cxf/dosgi/samples/__greeter/client/Activator.java> >>>> > >>>> >>>> <http://svn.apache.org/repos/****asf/cxf/dosgi/trunk/samples/****<http://svn.apache.org/repos/**asf/cxf/dosgi/trunk/samples/**> >>>> greeter/client/src/main/java/****org/apache/cxf/dosgi/samples/**** >>>> greeter/client/Activator.java<**http://svn.apache.org/repos/** >>>> asf/cxf/dosgi/trunk/samples/**greeter/client/src/main/java/** >>>> org/apache/cxf/dosgi/samples/**greeter/client/Activator.java<http://svn.apache.org/repos/asf/cxf/dosgi/trunk/samples/greeter/client/src/main/java/org/apache/cxf/dosgi/samples/greeter/client/Activator.java> >>>> > >>>> >>>>> >>>>> >>>> suggests that custom exceptions have to be thrown - so I suspect >>>> that if you get a ServiceException then no mapping was successful... >>>> >>>> The best way to figure out what is happening is to checkout the >>>> source, start the client container in a debug mode and get a >>>> breakpoint in ServiceInvocationHandler... >>>> >>>> Hope that helps a bit, >>>> >>>> Cheers, Sergey >>>> >>>> >>>> >>>> On 26/09/11 10:01, András Liter wrote: >>>> >>>> Thanks. >>>> >>>> So I have some kind of misunderstanding about DOSGi CXF's >>>> exception >>>> handling. >>>> >>>> My scenario is the following: >>>> I created a simple client-server architecture, where both client >>>> and server >>>> components run on Equinox and the communication is based on >>>> DOSGi CXF. The >>>> webservices worked fine, then I decided to put some >>>> exception-handling into >>>> the application. I subclassed java.lang.Exception to create a >>>> common >>>> exception for my app, then subclassed that exception for specific >>>> exceptions. Of course both client and server bundles use these >>>> exceptions, >>>> as I put them into the interface bundle. >>>> >>>> Then I wanted to test the exceptions: the client called the >>>> server side >>>> service operation, which threw my specific exception, but it was >>>> wrapped in >>>> the following exceptions: >>>> >>>> java.lang.reflect.__****UndeclaredThrowableException / >>>> java.lang.reflect.__****InvocationTargetException / >>>> org.osgi.framework.__****ServiceException / >>>> java.lang.reflect.__****InvocationTargetException / >>>> MySpecificException >>>> >>>> And here comes my question: Is this wrapping provided by the CXF >>>> DOSGi >>>> runtime? I mean is this the way it should work? If so, how could >>>> I catch >>>> this exception nicely on the client side? In nicely I mean that >>>> so far the >>>> only way I figured out was having a catch block for >>>> UndeclaredThrowable (or >>>> Exception.. :)), which just makes having custom exceptions >>>> useless :) And >>>> naturally, my IDE (Eclipse) wants the custom exception to be >>>> catched.. >>>> >>>> I tried to make my application exception by subclassing >>>> InvocationTargetException, but didnt work the way I wanted. >>>> >>>> So I am a bit confused, I hope someone can clarify my issue. >>>> >>>> Thanks in advance, >>>> András Liter >>>> >>>> On Sat, Sep 24, 2011 at 7:20 PM, Glen Mazza<[email protected] >>>> <mailto:[email protected]>> wrote: >>>> >>>> >>>> Feel free to ask your questions here. >>>> >>>> Glen >>>> >>>> >>>> On 09/24/2011 06:49 AM, András Liter wrote: >>>> >>>> Dear CXF Users, >>>> >>>> >>>> >>>> I wonder if there is a separate mailing list for the >>>> CXF-DOSGI subproject, >>>> or can I write my question regarding CXF-DOSGI here? >>>> >>>> >>>> >>>> Thank you, >>>> >>>> András Liter >>>> >>>> >>>> >>>> -- >>>> Glen Mazza >>>> Talend - http://www.talend.com/ai >>>> Blog - http://www.jroller.com/gmazza >>>> Twitter - glenmazza >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>> >> >
