Hi, I have a question about Exception catching in EJB. How can I throw a
custom Exception from my EJB?
I created an Exception class that extends the java.lang.Exception and used
it inside the EJB to throw Exception
When I call my EJB from a bean requested from JSP file I get this error in
the srv.log file,

Feb 21 16:52:45 2001: SM
Feb 21 16:52:45 2001:   at
com.dcsoft.isppro.ServerManagerBean.vsAddServer(ServerManagerBean.java:152)
Feb 21 16:52:45 2001:   at
com.dcsoft.isppro._sk_DCSoft_ISPPro_ServerManager.invoke(_sk_DCSoft_ISPPro_S
erverManager.java:166)
Feb 21 16:52:45 2001:   at com.sybase.CORBA.local.Socket.call(Native Method)
Feb 21 16:52:45 2001:   at
com.sybase.CORBA.local.OutputStream.write(OutputStream.java:29)
Feb 21 16:52:45 2001:   at
com.sybase.CORBA.iiop.Connection.invoke(Connection.java:1947)
Feb 21 16:52:45 2001:   at
com.dcsoft.isppro.ServerManager_Stub.vsAddServer(ServerManager_Stub.java:44)
Feb 21 16:52:45 2001:   at
com.dcsoft.isppro.ServerManagerLoader.vsAddServer(ServerManagerLoader.java:9
6)
Feb 21 16:52:45 2001:   at
_0005cAddServerPrc_0002ejspAddServerPrc_jsp_35._jspService(_0005cAddServerPr
c_0002ejspAddServerPrc_jsp_35.java:156)
Feb 21 16:52:45 2001:   at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:130)
Feb 21 16:52:45 2001:   at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
Feb 21 16:52:45 2001:   at
org.apache.jasper.runtime.JspServlet$JspServletWrapper.service(JspServlet.ja
va:164)
Feb 21 16:52:45 2001:   at
org.apache.jasper.runtime.JspServlet.serviceJspFile(JspServlet.java:256)
Feb 21 16:52:45 2001:   at
org.apache.jasper.runtime.JspServlet.service(JspServlet.java:361)
Feb 21 16:52:45 2001:   at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
Feb 21 16:52:45 2001:   at
com.sybase.jaguar.servlet.JagServlet.service(JagServlet.java:164)
Feb 21 16:52:45 2001:   at
com.sybase.jaguar.servlet.JagRequestDispatcher.service(JagRequestDispatcher.
java:760)
Feb 21 16:52:45 2001:   at
com.sybase.jaguar.servlet.ServletEngine.service(ServletEngine.java:528)
Feb 21 16:52:45 2001:   at
com.sybase.jaguar.servlet.ServletServiceImpl.doService(ServletServiceImpl.ja
va:52)
Feb 21 16:52:45 2001:   at
com.sybase.jaguar.servlet._sk_JaguarServlet_ServletService.invoke(_sk_Jaguar
Servlet_ServletService.java:140)
Feb 21 16:52:45 2001: SystemException: UNKNOWN
(DCSoft_ISPPro/ServerManager/vsAddServer - @127.0.0.1)

my Exception class is:

public class SMException extends java.lang.Exception
{

      public SMException(int a)
        {
                // TODO: implement
                detail=a;
        }
        public String toString()
        {
                // TODO: implement
                return ("SM");
        }
        public int getNumber()
        {
                // TODO: implement
                return (detail);
    }
    public String getMessage()
    {
        // TODO: implement
                return ("SM" + detail);
    }
     private int detail;
}

in the remote interface, I have this method vsAddServer:

public EJBResult vsAddServer(String connString, String serverName,  String
ipAddress, String secret, String comments) throws java.rmi.RemoteException;

and the bean implementation of this method is:

public EJBResult vsAddServer(String connString, String serverName, String
ipAddress, String secret, String comments) throws
javax.ejb.EJBException,SMException
    {
        // TODO: implement
      Connection conn   = null;
      ResultSet result  = null;
      Statement stmt   = null;
      PreparedStatement pstmt = null;

      EJBResult resultCode = new EJBResult();
      String arrString[];
      arrString = new String[1];

      try
      {
           secret  = nullTest(secret);
           comments= nullTest(comments);

           Class.forName("com.sybase.jdbc2.jdbc.SybDriver").newInstance();
           ....
            ....
            ....
            ....
           if (result.isBeforeFirst())
           {
                throw new SMException(2004); I'm trying to throw this
Exception
           }

           if (result != null) result.close
    }catch(SMException e)
      {
           arrString[0] = new String(e.toString());
          throw new SMException(e.getNumber());
    }catch(Exception e)
      {
           throw new javax.ejb.EJBException(e.toString());
      }finally
      {
          try
          {
              if (pstmt != null) pstmt.close();
              if (stmt != null) stmt.close();
              if (result != null) result.close();
              if (conn != null) conn.close();
         }catch(Exception e)
         {
              throw new javax.ejb.EJBException(e.toString());
         }
         pstmt = null;
         stmt = null;
         result  = null;
          conn = null;
    }
    arrString[0]=new String("SM10000");
    resultCode.setArrString(arrString);
    return(resultCode);
}

I want to know how I can throw my own custom Exception from EJB method
Many Thanks if somebody can help me

Hrair Karaboyadjian
Software Engineer

DC Soft S.A.L.
Tel:  +961-1-385425
Fax:  +961-1-385428
P.O.Box 11-337
Beirut - Lebanon
email: mailto:[EMAIL PROTECTED]
http://www.dcsoftintl.com

Hrair Karaboyadjian
Software Engineer

DC Soft S.A.L.
Tel:  +961-1-385425
Fax:  +961-1-385428
P.O.Box 11-337
Beirut - Lebanon
email: mailto:[EMAIL PROTECTED]
http://www.dcsoftintl.com

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to