Hi

I tried to catch a custom exception class, ServerException, on a static-stub client of 
a web service. However, I was not able to catch the ServerException. The client always 
caught SOAPFaultException. This SOAPFaultException contains ServerException string in 
its message.

So it's tedious to obtain error codes or messages from the ServerException, and to 
distinguish different exception types.

Could anyone give me some directions or point out what I did wrong with my code, so 
that I can catch custom exceptions directly please.

My system info: 
Server: JBOSS3.2.3 with JBOSS.NET
Client: Web-service client using Sun Java Web Services Developer Pack 1.3 library.

Part of the source codes are below.
Thanks you very much in advance
Kay

ServerException Class

  | import java.io.Serializable;
  | 
  | public class ServerException
  |   extends Exception implements Serializable
  | {
  |   public ServerException()
  |   {
  |     super();
  |   }
  | 
  |   public ServerException(String msg)
  |   {
  |     super(msg);
  |   }
  | }
  | 

UserEndPoint stateless session bean

  | ...
  |   /**
  |    * @ejb.interface-method
  |    *   view-type="remote"
  |    * @jboss-net.web-method
  |    */
  |   public String createUser(UserValue user) throws ServerException
  |   {
  |     try {
  |             
  |             UsersDTO usersDTO = new UsersDTO();
  |             try {
  |                     
org.apache.commons.beanutils.BeanUtils.copyProperties(usersDTO, user);
  |             } catch (Exception e) {
  |                     log.error("BeanUtils.copyProperties",e);
  |                     throw new CreateException("BeanUtils.copyProperties 
"+e.getMessage());
  |             }
  |             UsersLocal usersLocal = getUsersLocalHome().create(usersDTO);
  |             return usersLocal.getUserID();
  |             
  |     } catch (javax.ejb.CreateException ce) {
  |             log.error("createUser UserID="+user.getUserID(), ce);
  |             throw new ServerException("problem creating user ");
  |     } catch (javax.ejb.EJBException e) {
  |             log.error("createUser UserID="+user.getUserID(), e);
  |             throw new ServerException("problem occured on the server");            
 
  |     }
  | ...
  | 

JUNIT Client with Sun Java Web Services Developer Pack 1.3 library.


  | ..
  |     public void testCreateUser() {
  |         try {
  |             // Prepare input
  |             UserValue user = new UserValue();
  |             
  |             // test 
  |            String result = userManagementEndPointBean.createUser(user);
  | 
  |         } catch (ServerException ex) {
  |             System.out.println("Received1");
  |             ex.printStackTrace();
  |         } catch (SOAPFaultException ex) {
  |             System.out.println("Received2");
  | 
  |                     System.out.println("Received3.2 with message " + 
ex.getMessage());
  |                     System.out.println("Received3.2 with LocalizedMessage " + 
ex.getLocalizedMessage());
  |                     System.out.println("Received3.2 with getFaultActor " + 
ex.getFaultActor());
  |                     System.out.println("Received3.2 with getFaultString " + 
ex.getFaultString());
  |                     System.out.println("Received3.2 with getFaultCode " + 
ex.getFaultCode());
  |                     
  |             ex.printStackTrace();
  |         } catch (Exception ex) {
  |             System.out.println("Received4");
  |         }           
  |     }  
  | ...
  | 

Result from console is 
anonymous wrote : 
  | Received2
  | Received3.2 with message com.j2ee.app.services.exceptions.ServerException: problem 
occured on the server
  | Received3.2 with LocalizedMessage 
com.j2ee.app.services.exceptions.ServerException: problem occured on the server
  | Received3.2 with getFaultActor null
  | Received3.2 with getFaultString com.j2ee.app.services.exceptions.ServerException: 
problem occured on the server
  | javax.xml.rpc.soap.SOAPFaultException: 
com.j2ee.app.services.exceptions.ServerException: problem occured on the server
  | Received3.2 with getFaultCode 
{http://schemas.xmlsoap.org/soap/envelope/}Server.userException
  |     at com.sun.xml.rpc.client.StreamingSender._raiseFault(StreamingSender.java:360)
  |     at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:224)
  | ...
  | 

The stub on client generated by wscompile (Sun) is below. The code shows that 
ServerException is declared properly in WSDL, so wscompile could generate it.

  | ...
  |    /*
  |      *  implementation of createUser
  |      */
  |     public java.lang.String 
createUser(com.app.j2ee.usermanagement.ejb.staticstub.client.UserValue in0)
  |         throws com.app.j2ee.usermanagement.ejb.staticstub.client.ServerException, 
java.rmi.RemoteException {
  |         
  |         try {
  |             
  |             StreamingSenderState _state = _start(_handlerChain);
  |             
  |             InternalSOAPMessage _request = _state.getRequest();
  |             _request.setOperationCode(createUser_OPCODE);
  |             
com.app.j2ee.usermanagement.ejb.staticstub.client.UserManagementImpl_createUser_RequestStruct
 _myUserManagementImpl_createUser_RequestStruct =
  |                 new 
com.app.j2ee.usermanagement.ejb.staticstub.client.UserManagementImpl_createUser_RequestStruct();
  |             
  |             _myUserManagementImpl_createUser_RequestStruct.setIn0(in0);
  |             
  |             SOAPBlockInfo _bodyBlock = new 
SOAPBlockInfo(ns1_createUser_createUser_QNAME);
  |             _bodyBlock.setValue(_myUserManagementImpl_createUser_RequestStruct);
  |             
_bodyBlock.setSerializer(ns1_myUserManagementImpl_createUser_RequestStruct_SOAPSerializer);
  |             _request.setBody(_bodyBlock);
  |             
  |             
_state.getMessageContext().setProperty(HttpClientTransport.HTTP_SOAPACTION_PROPERTY, 
"UserManagementService");
  |             
  |             _send((String) _getProperty(ENDPOINT_ADDRESS_PROPERTY), _state);
  |             
  |             
com.app.j2ee.usermanagement.ejb.staticstub.client.UserManagementImpl_createUser_ResponseStruct
 _myUserManagementImpl_createUser_ResponseStruct = null;
  |             Object _responseObj = _state.getResponse().getBody().getValue();
  |             if (_responseObj instanceof SOAPDeserializationState) {
  |                 _myUserManagementImpl_createUser_ResponseStruct =
  |                     
(com.app.j2ee.usermanagement.ejb.staticstub.client.UserManagementImpl_createUser_ResponseStruct)((SOAPDeserializationState)_responseObj).getInstance();
  |             } else {
  |                 _myUserManagementImpl_createUser_ResponseStruct =
  |                     
(com.app.j2ee.usermanagement.ejb.staticstub.client.UserManagementImpl_createUser_ResponseStruct)_responseObj;
  |             }
  |             
  |             return 
_myUserManagementImpl_createUser_ResponseStruct.getCreateUserReturn();
  |         } catch (com.app.j2ee.usermanagement.ejb.staticstub.client.ServerException 
e) {
  |             throw e;
  |         } catch (RemoteException e) {
  |             if (e.detail instanceof com.sun.xml.rpc.util.HeaderFaultException) {
  |                 com.sun.xml.rpc.util.HeaderFaultException hfe = 
(com.sun.xml.rpc.util.HeaderFaultException) e.detail;
  |                 SOAPHeaderBlockInfo headerBlock = (SOAPHeaderBlockInfo) 
hfe.getObject();
  |                 Object obj = headerBlock.getValue();
  |             }
  |             // let this one through unchanged
  |             throw e;
  |         } catch (JAXRPCException e) {
  |             throw new RemoteException(e.getMessage(), e);
  |         } catch (Exception e) {
  |             if (e instanceof RuntimeException) {
  |                 throw (RuntimeException)e;
  |             } else {
  |                 throw new RemoteException(e.getMessage(), e);
  |             }
  |         }
  |     }
  |     
  | 

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3839453#3839453

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3839453


-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 - 
digital self defense, top technical experts, no vendor pitches, 
unmatched networking opportunities. Visit www.blackhat.com
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to