The only thing that I can see right off is the call to
PortableRemoteObject.narrow().  We use EJBs all the time with JRun.  Our
code looks like yours except we never use that call.  Try removing it.

Also, you might go into the JMC after you deploy your EJB and verify that
the "ebj.beanHomeName" property for your bean is really "TransactionBean"
like it should be.  You should also verify that the ejb.allowedIdentities
property is set to "all" like the properties file says.

The exception you show seems to indicate that the server is having trouble
finding one of the bean classes.  I'm not sure why that would be.

If this doesn't solve the problem, let me know and I will look closer.

Take heart!  It appears that you are very close.


-----Original Message-----
From: Robert Jacobs [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, August 08, 2001 4:39 PM
To: JRun-Talk
Subject: JRun.sucks Exception


I have been trying for quite some time to deploy a session bean that will
handle database transactions.  I am getting the following error
****************************************************************************
*****************************************
There was an exception thrown here. javax.naming.NamingException: Failed to
unmarshal proxy. Root exception is java.lang.ClassNotFoundException:
TransactionHomeObject_Stub at java.io.ObjectInputStream.inputObject(Unknown
Source) at java.lang.Exception.(Unknown Source) at
java.lang.ClassNotFoundException.(Unknown Source) at
java.io.ObjectInputStream.inputObject(Unknown Source) at
java.io.ObjectInputStream.readObject(Unknown Source) at
java.io.ObjectInputStream.readObject(Unknown Source) at
java.rmi.MarshalledObject.get(Unknown Source) at
allaire.ejipt._NamingContext$_Proxy._resolve(_NamingContext.java:362) at
allaire.ejipt._NamingContext.lookup(_NamingContext.java:68) at
allaire.ejipt._ClientContext.lookup(_ClientContext.java:113) at
javax.naming.InitialContext.lookup(InitialContext.java:349) at
testbean.doGet(testbean.java:33) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:865) at
allaire.jrun.servlet.JRunSE.service(JRunSE.java:1013) at
allaire.jrun.servlet.JRunSE.runServlet(JRunSE.java, Compiled Code) at
allaire.jrun.servlet.JRunNamedDispatcher.forward(JRunNamedDispatcher.java:34
) at allaire.jrun.servlet.Invoker.service(Invoker.java:84) at
allaire.jrun.servlet.JRunSE.service(JRunSE.java:1013) at
allaire.jrun.servlet.JRunSE.runServlet(JRunSE.java, Compiled Code) at
allaire.jrun.servlet.JRunRequestDispatcher.forward(JRunRequestDispatcher.jav
a:88) at allaire.jrun.servlet.JRunSE.service(JRunSE.java:1131) at
allaire.jrun.servlet.JvmContext.dispatch(JvmContext.java:330) at
allaire.jrun.jrpp.ProxyEndpoint.run(ProxyEndpoint.java:382) at
allaire.jrun.ThreadPool.run(ThreadPool.java, Compiled Code) at
allaire.jrun.WorkerThread.run(WorkerThread.java, Compiled Code)
javax.naming.NamingException: Failed to unmarshal proxy [Root exception is
java.lang.ClassNotFoundException: TransactionHomeObject_Stub]
****************************************************************************
******************************************
Here is my code

import java.util.*;
import java.sql.*;
import java.rmi.*;
import javax.rmi.*;
import javax.ejb.*;
import javax.naming.*;
import allaire.ejipt.*;

public interface TransactionHome extends EJBHome {
   public Transaction create()
          throws RemoteException, CreateException;
}
****************************************************************************
**********************************
import java.util.*;
import java.text.*;
import java.sql.*;
import java.rmi.*;
import javax.rmi.*;
import javax.ejb.*;
import javax.naming.*;
import allaire.ejipt.*;

public class TransactionBean implements SessionBean {

   public SessionContext context;

   public void ejbCreate() {
   }

   public boolean insert(String cid, int jn, int comp, int e, int ttype,
String sid, int count) {

     Connection con = null;

     PreparedStatement ps = null;

     java.sql.Date today = new java.sql.Date(new
java.util.Date().getTime());
     DateFormat cur_date = DateFormat.getDateInstance(DateFormat.MEDIUM);

     try {
       con = getConnection();
       ps = con.prepareStatement("INSERT INTO trans(client_id, job_number,
comp_id,"+
            " event_id, trans_type, cur_date, session_id, cur_count) VALUES
(?,?,?,?,?,?,?,?)");
       ps.setString(1, cid);
       ps.setInt(2, jn);
       ps.setInt(3, comp);
       ps.setInt(4, e);
       ps.setInt(5, ttype);
       ps.setDate(6, today);
       ps.setString(7, sid);
       ps.setInt(8, count);
       int retVal = ps.executeUpdate();
       if(retVal!=1) {
          System.err.println("Error inserting into the database.  The values
were \ncid="+cid+"\njn="+

Integer.toString(jn)+"\ncomp="+Integer.toString(comp)+"\nevent="+Integer.toS
tring(event)+

"\nttype="+Integer.toString(ttype)+"\ncur_date="+cur_date.toString()+"\nsid=
"+sid+"\ncount="+Integer.toString(count));
       }
     } catch(SQLException sql) {
        System.err.println("There was a SQLException thrown in the
Transaction Bean insert method.");
                return false;
     } finally {
        try {
          if(ps != null) ps.close();
          if(con != null) con.close();
        } catch(SQLException se)

          se.printStackTrace();
        }
     }
      return true;
   }

   public void ejbActivate() {}
   public void ejbPassivate() {}
   public void ejbRemove() {}

   public void setSessionContext(SessionContext ctx) {
     context = ctx;
   }

   private Connection getConnection() throws SQLException {
      Connection con = null;
      try {
        con = ResourceManager.getConnection("source1");
      } catch(Exception e) {
          System.err.println("Error getting connection in
TransactionBean::getConnection()");
      }
          return con;
   }

}
****************************************************************************
**************************************
import java.util.*;
import java.sql.*;
import java.rmi.*;
import javax.rmi.*;
import javax.ejb.*;
import javax.naming.*;
import allaire.ejipt.*;


public interface Transaction extends EJBObject {
  public boolean insert(String cid, int jn, int comp, int e, int ttype,
String sid, int count)
        throws RemoteException;
}
****************************************************************************
**************************************
<?xml version="1.0"?>

<!DOCTYPE ejb-jar PUBLIC  "-//Sun Microsystems, Inc.//DTD Enterprise
JavaBeans 1.1//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd";>

<ejb-jar>
 <enterprise-beans>
  <session>
    <description>
          A Session Bean which handles TMX Rich Media Transactions
        </description>
        <ejb-name>TransactionBean</ejb-name>
        <home>TransactionHome</home>
        <remote>Transaction</remote>
        <ejb-class>TransactionBean</ejb-class>
        <session-type>Stateless</session-type>
        <transaction-type>Container</transaction-type>
  </session>
 </enterprise-beans>

 <assembly-descriptor>
  <security-role>
        <description>
          Everyone can join the party
        </description>
        <role-name>all</role-name>
  </security-role>

  <method-permission>
    <role-name>all</role-name>
        <method>
          <ejb-name>TransactionBean</ejb-name>
          <method-name>*</method-name>
        </method>
  </method-permission>

  <container-transaction>
   <method>
     <ejb-name>TransactionBean</ejb-name>
         <method-name>*</method-name>
   </method>
   <trans-attribute>Required</trans-attribute>
  </container-transaction>
 </assembly-descriptor>
</ejb-jar>
****************************************************************************
****************************************
import java.io.*;
import java.rmi.*;
import java.rmi.server.*;
import java.util.*;
import javax.ejb.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;
import allaire.ejipt.*;

public class testbean extends HttpServlet {
  private static final String CONTENT_TYPE = "text/html";
  /**Initialize global variables*/
  public void init(ServletConfig config) throws ServletException {
    super.init(config);
  }
  /**Process the HTTP Get request*/
  public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();
    System.setSecurityManager(new RMISecurityManager());
    out.println("<html>");
    out.println("<head><title>testbean</title></head>");
    out.println("<body>");
    try {

      Properties properties = new Properties();
      properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"allaire.ejipt.ContextFactory");
      properties.setProperty(Context.PROVIDER_URL,
"ejipt://127.0.0.1:2323");
      Context ctx = new InitialContext(properties);
   //   Object ref = ctx.lookup("TransactionBean");
   //   TransactionHome t_home = (TransactionHome)
PortableRemoteObject.narrow(ref, TransactionHome.class);
      TransactionHome t_home = (TransactionHome)
ctx.lookup("TransactionBean");
          Transaction trans = t_home.create();
      if(trans.insert("914", 98765, 999, 1, 5, "8123716", 1)) {
        out.println("A record should have been added to the database");
      }
      else {
        out.println("Something went wrong.");
      }
    } catch(Exception e) {
      out.println("There was an exception thrown here.");
          e.printStackTrace(out);
          out.println(e.toString());
    }


    out.println("<p>The servlet has received a GET. This is the
reply.</p>");
    out.println("</body></html>");
  }
  /**Clean up resources*/
  public void destroy() {
  }
}
****************************************************************************
************************************
#
#Wed Aug 08 17:37:21 EDT 2001
ejipt.jdbcSources=source1
source1.ejipt.sourceDriverClassName=com.inet.tds.TdsDriver
source1.ejipt.sourceURL=jdbc\:inetdae7\:192.168.1.21\:1433
source1.ejipt.sourceUser=user
source1.ejipt.sourcePassword=password
ejipt.storeName=default
ejipt.loginSessionHomeName=default.LoginSessionHome
ejipt.userHomeName=default.UserHome
ejipt.classServer.host=localhost
ejipt.roleHomeName=default.RoleHome
ejipt.ejbJars=transaction1.jar,bob_ejb.jar,
ejb.allowedIdentities=all
****************************************************************************
*********************************

This has been driving me crazy for the longest time.  Any help would be most
appreciated.

Thanks,
Bob
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm
Archives: http://www.mail-archive.com/[email protected]/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists

Reply via email to