axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jay Doggett" <jmdogg...@comcast.net>
Subject Basic installation instructions problem
Date Wed, 29 Dec 2004 17:56:27 GMT

	I have the Axis server up and working at last, and have made a list of the issues I ran into
and fixes, which I will write up soon.

	Now I am attempting to deploy the monitor service per the existing instructions, but I am
getting an error that reads: The axis
engine could not find a target service to invoke. How do I fix this?

    I have a deploy-monitor.wsdd that contains only the sample getInfo/getQuote service, since
that is already deployed, it seemed
like a good starting point. The getInfo service works, after much struggle, according to the
results shown in step 7 of the
installation instructions. I do receive 55.25.

	And what's up with that log4j:warning! I got rid of that once, but it keeps happening.

Jay
Your best bet is to hire a vet!

-----Original Message-----
From: Westfall, Eric Curtis [mailto:ewestfal@indiana.edu]
Sent: Wednesday, December 29, 2004 12:36 PM
To: axis-user@ws.apache.org
Subject: Service Specific Exception not working


Hello, I've searched the list for answers to this issue and I haven't
been able to find any satisfactory ones.

I'm having trouble getting "Service Specific Exceptions" as defined in
the JAX-RPC specification to work properly.  If I define a custom
exception and have it extend RemoteException, then it works properly.
However, if it simply extends Exception, then I end up with an AxisFault
in my client, rather than an instance of the thrown exception.

For example, here is my exception definition:

package test;

public class TestException extends Exception implements
java.io.Serializable {

    private String message;

    public TestException() {
        super();
    }

    public TestException(String message) {
        setMessage(message);
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

}

I have a service with a method "testException" whose definition in the
service interface is:

public void testException() throws RemoteException, TestException;

And the implementation looks like this:

public void testException() throws TestException {
      throw new TestException("This is the TestException message");
}

If I execute the "testException" method in a client in the above case.
I get back an org.apache.axis.AxisFault with the following stack trace
on the client (run from a JUnit test):

AxisFault
 faultCode:
{http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode:
 faultString: test.TestException: This is the TestException message
 faultActor:
 faultNode:
 faultDetail:
	{}test.TestException:<message xsi:type="soapenc:string"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">This is the
TestException message</message>
	{http://xml.apache.org/axis/}hostname:localhostname

test.TestException: This is the TestException message
	at
org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.ja
va:221)
	at
org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.jav
a:128)
	at
org.apache.axis.encoding.DeserializationContext.endElement(Deserializati
onContext.java:1083)
	at
org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1712)
	at org.apache.crimson.parser.Parser2.content(Parser2.java:1963)
	at
org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1691)
	at org.apache.crimson.parser.Parser2.content(Parser2.java:1963)
	at
org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1691)
	at
org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:667)
	at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
	at
org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
	at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationCon
text.java:226)
	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:645)
	at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
	at
org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstan
dChecker.java:62)
	at org.apache.axis.client.AxisClient.invoke(AxisClient.java:173)
	at org.apache.axis.client.Call.invokeEngine(Call.java:2719)
	at org.apache.axis.client.Call.invoke(Call.java:2702)
	at org.apache.axis.client.Call.invoke(Call.java:2378)
	at org.apache.axis.client.Call.invoke(Call.java:2301)
	at org.apache.axis.client.Call.invoke(Call.java:1758)
	at
org.apache.axis.client.AxisClientProxy.invoke(AxisClientProxy.java:163)
	at $Proxy0.testException(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at
org.springframework.remoting.rmi.RmiClientInterceptorUtils.doInvoke(RmiC
lientInterceptorUtils.java:93)
	at
org.springframework.remoting.rmi.RmiClientInterceptorUtils.invoke(RmiCli
entInterceptorUtils.java:62)
	at
org.springframework.remoting.jaxrpc.JaxRpcPortClientInterceptor.invoke(J
axRpcPortClientInterceptor.java:290)
	at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Ref
lectiveMethodInvocation.java:138)
	at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAo
pProxy.java:152)
	at $Proxy1.testException(Unknown Source)
	at test.WebServiceProxy.testException(WebServiceProxy.java:62)
	at test.ExceptionTest.testTestException(ExceptionTest.java:26)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at junit.framework.TestCase.runTest(TestCase.java:154)
	at junit.framework.TestCase.runBare(TestCase.java:127)
	at junit.framework.TestResult$1.protect(TestResult.java:106)
	at junit.framework.TestResult.runProtected(TestResult.java:124)
	at junit.framework.TestResult.run(TestResult.java:109)
	at junit.framework.TestCase.run(TestCase.java:118)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTe
stRunner.java:421)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRun
ner.java:305)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRu
nner.java:186)



However, if I change TestException so that it extends RemoteException,
then a TestException rather than the above AxisFault is thrown to my
client.  This is the behaviour I'm looking for, but I don't want my
service specific exceptions to extend RemoteException.  I'm puzzled as
to why this is happening.  Are RemoteExceptions handled differently than
regular Exceptions in Axis even though the JAX-RPC specification states
that they should be supported?

I didn't include my server-deploy.wsdd file or my WSDL files in this
email.  I can include the relevant parts of those if that would help.
In my client and on the server I've got TestException set up to be
serialized and deserialized using the BeanSerializerFactory (and
BeanDeserializerFactory) which I believe is correct.

If anybody has any insight into why Exceptions don't work but
RemoteExceptions do, I would really appreciate it.  I've been trying to
figure this out for a while now :)

Thanks in advance for your time,
Eric Westfall


Mime
View raw message