Please file a JIRA.
On 4/14/07, John G. Norman <[EMAIL PROTECTED]> wrote:
Martin,
*** Throw an exception from the method that returns void.
That's what my posting was about: If you throw an exception from a
method that returns void, ** the client never gets the exception **.
It will be logged on the server-side.
If you change the method to return something like String (but, again,
throw an exception from within the method), the client does get the
exception.
John
On 4/14/07, Martin Gainty <[EMAIL PROTECTED]> wrote:
> Good Afternoon John-
>
> I just deployed the Axis 2.1.1 original pojo sample of AddressBookService
> without any errors
>
> pojo/build/classes/META-INF/services.xml displays
> <service name="AddressBookService" scope="application">
> <description>
> POJO: AddressBook Service
> </description>
> <messageReceivers>
> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
>
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
>
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
> </messageReceivers>
> <parameter name="ServiceClass"
> locked="false">sample.addressbook.service.AddressBookService</parameter>
>
> </service>
>
> here is the code for AddressBookService
>
> package sample.addressbook.service;
> public class AddressBookService {
> private HashMap entries = new HashMap();
> /*** Add an Entry to the Address Book
> * @param entry */
> public void addEntry(Entry entry)
> {
> this.entries.put(entry.getName(), entry);
> }
>
> /*** Search an address of a person
> * @param name the name of the person whose address needs to be found
> * @return return the address entry of the person.
> */
> public Entry findEntry(String name)
> {
> return (Entry) this.entries.get(name);
> }
> }
>
> !--once the service is deployed I can access the service attributes via
> !--http://localhost:8080/axis2-/axis2-admin/listService
> !--which displays
>
> Service Description: AddressBookService
> Service Status : Active
> Engaged modules for the service
> a.. addressing-1.1 :: Disengage
>
> Available operations
> b.. addEntry
> Engaged Modules for the Operation
> a.. addressing-1.1 :: Disengage
>
> c.. findEntry
> Engaged Modules for the Operation
> a.. addressing-1.1 :: Disengage
>
>
> I'm attempting to understand why you had to change the signatures when
> services.xml already declares
> org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver (addEntry method)
> org.apache.axis2.rpc.receivers.RPCMessageReceiver (findEntry method)
>
> ???
> Martin
>
> This email message and any files transmitted with it contain confidential
> information intended only for the person(s) to whom this email message is
> addressed. If you have received this email message in error, please notify
> the sender immediately by telephone or email and destroy the original
> message without making a copy. Thank you.
>
> ----- Original Message -----
> From: "John G. Norman" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Saturday, April 14, 2007 11:12 AM
> Subject: Clients don't get exception thrown out of methods returning void
> (was: Re: Web service error handling with POJO approach)
>
>
> > After many hours, I finally traced my problem to an apparent bug.
> >
> > (Workaround for the bug at the end.)
> >
> > The bug looks a lot like 1277 in Jira, which was a blocker and
> > resolved for 1.0 (http://issues.apache.org/jira/browse/AXIS2-1277).
> >
> > Before I add a bug report, I would appreciate it if someone out there
> > could reproduce what's below as a sanity check. It's about 10 lines
> > added to one of the samples.
> >
> > Here's the story:
> >
> > My POJO-style client wasn't getting exceptions from its POJO-style
> > service. So I went back to the samples/pojo example, and threw an
> > exception from a method. The client got it. Hmm. I just couldn't
> > figure out what the difference was between my code and the sample.
> > Then I realized that my methods return void.
> >
> > So I added this to AddressBookService.java in samples/pojo, a method
> > returning void, then a second returning String:
> >
> > public void test1(String s) throws Exception {
> > throw new Exception("test1");
> > }
> >
> > public String test2(String s) throws Exception {
> > throw new Exception("test2");
> > }
> >
> > And this to AddressBookADBClient.java:
> >
> > Test1 test1 = new Test1();
> > test1.setParam0("foo");
> > stub.test1(test1);
> >
> > Test2 test2 = new Test2();
> > test2.setParam0("bar");
> > stub.test2(test2);
> >
> > Here's a snippet from the server-side log:
> >
> > Apr 14, 2007 10:55:28 AM
> > org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver
> > invokeBusinessLogic
> > SEVERE: test1
> > java.lang.reflect.InvocationTargetException
> > Caused by: java.lang.Exception: test1
> > at sample.addressbook.service.AddressBookService.test1(Unknown
> > Source)
> > ... 35 more
> > Apr 14, 2007 10:55:29 AM
> > org.apache.axis2.rpc.receivers.RPCMessageReceiver invokeBusinessLogic
> > SEVERE: test2
> > java.lang.reflect.InvocationTargetException
> > Caused by: java.lang.Exception: test2
> > at sample.addressbook.service.AddressBookService.test2(Unknown
> > Source)
> > ... 35 more
> >
> > As you can see, both exceptions are thrown.
> >
> > Now here's the client (NOTICE: No evidence of an exception from the
> > test1 method):
> >
> > adb.client.run:
> > [java] Name :Abby Cadabby
> > [java] Street :Sesame Street
> > [java] City :Sesame City
> > [java] State :Sesame State
> > [java] Postal Code :11111
> > [java] org.apache.axis2.AxisFault: test2
> > [java] at
> >
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.jav
> > a:271)
> > [java] at
> >
org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.
> > java:202)
> > [java] at
> > sample.addressbook.stub.AddressBookServiceStub.test2(Unknown Source)
> >
> > So I guess that the workaround is that I'll have to have all of my
> > methods return something: Perhaps a String, or maybe I'll create a
> > JavaBean class called Nothing. Or maybe even Void with a capital V.
> >
> > This is a really awful bug.
> >
> > On 4/10/07, John G. Norman <[EMAIL PROTECTED]> wrote:
> >> With a POJO Service:
> >>
> >> I have now tried the strategy here:
> >>
> >>
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/util/FaultThrowingService.java?view=markup
> >>
> >> Still not seeing the exception on the client that calls the service .
> >> . . Still getting:
> >>
> >> > FaultReason; nested exception is:
> >> > java.lang.Exception: This is a test Exception
> >> > java.lang.reflect.InvocationTargetException
> >> > 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:324)
> >> > [much deleted]
> >> >
> >> > Caused by: org.apache.axis2.AxisFault: FaultReason; nested exception
> >> > is:
> >> > java.lang.Exception: This is a test Exception
> >> > at com.myco.Service.test(Service.java:45)
> >> > ... 48 more
> >> > Caused by: java.lang.Exception: This is a test Exception
> >> > ... 49 more
> >> > DEBUG 16:24:37,843 org.apache.axis2.AxisFault: FaultReason; nested
> >> > exception is:
> >> > java.lang.Exception: This is a test Exception
> >> > DEBUG 16:24:37,843 isReplyRedirected: FaultTo is null. Returning
> >> > isReplyRedirected
> >> > DEBUG 16:24:37,843 isReplyRedirected: ReplyTo is null. Returning false
> >> >
> >>
> >> On 4/9/07, John G. Norman <[EMAIL PROTECTED]> wrote:
> >> > Hi all.
> >> >
> >> > This is a great topic -- how to manage exceptions for services built
> >> > on POJOs. If it is as easy as the link Anne Manes provided
> >> > (http://wso2.org/library/171) then throwing exceptions might well be
> >> > included in the main Axis2 docs at
> >> > http://ws.apache.org/axis2/1_1_1/pojoguide.html).
> >> >
> >> > But I just tried throwing an exception out of a POJO's method (the
> >> > basis for a service as described here:
> >> > http://ws.apache.org/axis2/1_1_1/pojoguide.html), and the exception
> >> > doesn't seem to make it back to the client.
> >> >
> >> > Does the QName need to match one of the faults defined in the client
> >> > stub?
> >> >
> >> > In any case, the code looks like this:
> >> >
> >> > public void test() throws AxisFault {
> >> > throw new AxisFault(new QName("http://test.org", "FaultCode",
> >> > "test"), "FaultReason", new Exception("This is a test Exception"));
> >> > }
> >> >
> >> > On the server, the trace looks like this:
> >> >
> >> > FaultReason; nested exception is:
> >> > java.lang.Exception: This is a test Exception
> >> > java.lang.reflect.InvocationTargetException
> >> > 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:324)
> >> > [much deleted]
> >> >
> >> > Caused by: org.apache.axis2.AxisFault: FaultReason; nested exception
> >> > is:
> >> > java.lang.Exception: This is a test Exception
> >> > at com.myco.Service.test(Service.java:45)
> >> > ... 48 more
> >> > Caused by: java.lang.Exception: This is a test Exception
> >> > ... 49 more
> >> > DEBUG 16:24:37,843 org.apache.axis2.AxisFault: FaultReason; nested
> >> > exception is:
> >> > java.lang.Exception: This is a test Exception
> >> > DEBUG 16:24:37,843 isReplyRedirected: FaultTo is null. Returning
> >> > isReplyRedirected
> >> > DEBUG 16:24:37,843 isReplyRedirected: ReplyTo is null. Returning false
> >> >
> >> > On 4/3/07, Anne Thomas Manes <[EMAIL PROTECTED]> wrote:
> >> > > See http://wso2.org/library/171.
> >> > >
> >> > > On 4/3/07, Chan, Herman <[EMAIL PROTECTED]> wrote:
> >> > > >
> >> > > >
> >> > > >
> >> > > >
> >> > > > Hi all:
> >> > > >
> >> > > >
> >> > > >
> >> > > > I am relatively new to Axis 2 and web services in general, so
> >> > > > please bear
> >> > > > with me if I ask any stupid questions.
> >> > > >
> >> > > >
> >> > > >
> >> > > > I am writing a very simple web service that would return a list of
> >> > > > directories on a server. However, if certain directories does not
> >> > > > exists,
> >> > > > I'd like a throw an error back to the calling client.
> >> > > >
> >> > > >
> >> > > >
> >> > > > I am using the POJO approach to create web services using axis2, so
> >> > > > is it
> >> > > > good enough for me to throw a plain Exception or do I have to do
> >> > > > more? What
> >> > > > is the best practice in doing error handling in web services?
> >> > > >
> >> > > >
> >> > > >
> >> > > > Thanks in advance.
> >> > > >
> >> > > >
> >> > > >
> >> > > > Herman Chan
> >> > > >
> >> > > >
> >> > >
> >> > > ---------------------------------------------------------------------
> >> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> > > For additional commands, e-mail: [EMAIL PROTECTED]
> >> > >
> >> > >
> >> >
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]