<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
I am currently working on an old legacy system that is using jax-rpc. I would like to add in some custom faults such that I can inform clients better. I.E. I can throw custom exceptions/faults such that the user can catch them to determine the best course of action. However using JBoss I have not been able to get this to work. The main problem is that in the SOAP message that comes back there is no <detail> tag. This tag is how the exception would get deserialized on the client, so without that tag the client will have no idea what exception/fault was thrown.<br><br>Has anyone every gotten a custom fault to work with JBoss? My guess is no as I have not been able to find out anything on this problem.<br><br>I am running 4.2.3.GA and out of the box is has jbossws-native-3.0.1, I also installed jbossws-native-3.1.1.GA to see if it fixed the problem but I was still out of luck. Please help I am all out of ideas! Below are some code snippets to show what I am talking about. If you need more please let me know.<br><br>I took a simple example jax-rpc HelloWord service from the java tutorial section and added a fault to the wsdl.<br><br>Here is a snippet:<br> <portType name="HelloIF"><br> <operation name="sayHello" parameterOrder="String_1"><br> <input message="tns:HelloIF_sayHello"/><br> <output message="tns:HelloIF_sayHelloResponse"/><br> <fault name="fault" message="tns:sayHelloException"></fault><br> </operation><br> </portType> <br><br>I generated the jax-rpc classes:<br> <br>Here is the fault/exception generated:<br>public class SayHelloException extends java.lang.Exception {<br> private java.lang.String message;<br> <br> <br> public SayHelloException(java.lang.String message) {<br> super(message);<br> this.message = message;<br> }<br> <br> public java.lang.String getMessage() {<br> return message;<br> }<br>}<br><br>Here is the endpoint interface:<br>public interface HelloIF extends java.rmi.Remote {<br> public java.lang.String sayHello(boolean string_1) throws <br> samples.webservices.jaxrpc.simple.SayHelloException, java.rmi.RemoteException;<br>}<br><br>I also creating the jax-rpc mapping file and deployed with the war in the web-inf directory as well as my webservices.xml and web.xml.<br><br>At this point I am not sure why jboss is not creating the <detail> tag in the SOAP message that gets sent back to the server.<br><br>Here is how I throw the custom exception on the server:<br>throw new SayHelloException("Throwing custom exception/fault from WS");<br><br>Here is my client:<br> try {<br> Stub stub = (Stub) port;<br> stub._setProperty(javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY, "http://localhost:8080/hello/simple"); <br> String result = port.sayHello(true);<br> System.out.println(result);<br> } catch (SayHelloException ex) {<br> System.out.println("PASS! caught a custom exception");<br> } catch (RemoteException ex) {<br> } catch (Exception ex) {<br> System.out.println("FAIL! caught a Exception");<br> }<br>                                            <br /><hr />Windows 7: It works the way you want. <a href='http://www.microsoft.com/Windows/windows-7/default.aspx?ocid=PID24727::T:WLMTAGL:ON:WL:en-US:WWL_WIN_evergreen2:102009' target='_new'>Learn more.</a></body>
</html>