Ejb constructor - BMPEntityBase

It is sayed in the entity bean example that the create takes the place of the constructor should the normal constructor should do nothing. But in the ebjCreate() method there is no code like super(BMPExample.getHelper().getTopLinkSessionName()) ; then I'm wondering how it can works, where is the BMPEntityBase constructed? and so is the toplink session initialized ?
Does the ebjCreate() call the constructor of the ejb class?
Thx

Should it also be done in the constructor and must I also call the super(...getTopLinkSessionName()) in the ejbCreate()?
Thx

Similar Messages

  • Who can explain how EJB connect to Oracle9i DB with DataSource?

    I have taken 4 days into this problem. I am developing EJB with J2EE1.3 and Oracle9i DB, I can connect to DB in code with DriverManager. But I want to use DataSource to connect to DB. I failed, I can not get new way to resolve it when I after try to connect with javax.sql.DataSource, oracle.jdbc.pool.OracleDataSource and oracle.jdbc.pool.OracleConnectionPoolDataSource.
    I have got different Exceptions when I coding different ways:
    one is:
    Caught an exception.
    java.rmi.ServerException: RemoteException occurred in server thread; nested exce
    ption is:
    java.rmi.RemoteException: nested exception is: javax.ejb.EJBException: U
    nable to connect to database. com.sun.enterprise.resource.JdbcDataSource; nested
    exception is:
    javax.ejb.EJBException: Unable to connect to database. com.sun.enterpris
    e.resource.JdbcDataSource
    java.rmi.RemoteException: nested exception is: javax.ejb.EJBException: Unable to
    connect to database. com.sun.enterprise.resource.JdbcDataSource; nested excepti
    on is:
    javax.ejb.EJBException: Unable to connect to database. com.sun.enterpris
    e.resource.JdbcDataSource
    javax.ejb.EJBException: Unable to connect to database. com.sun.enterprise.resour
    ce.JdbcDataSource
    <<no stack trace available>>
    the Other is:
    Caught an exception.
    java.rmi.ServerException: RemoteException occurred in server thread; nested exce
    ption is:
    java.rmi.RemoteException: nested exception is: javax.ejb.EJBException: U
    nable to connect to database. makeConnection:Io Exception: Connection refused(DESCRIP
    TION=(TMP=)(VSNNUM=150999297)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)
    ))); nested exception is:
    javax.ejb.EJBException: Unable to connect to database. makeConnection:Io
    Exception: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=150999297)(ERR=12505)(ERROR_
    STACK=(ERROR=(CODE=12505)(EMFI=4))))
    java.rmi.RemoteException: nested exception is: javax.ejb.EJBException: Unable to
    connect to database. makeConnection:Io Exception: Connection refused(DESCRIPTION=(TM
    P=)(VSNNUM=150999297)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))); nes
    ted exception is:
    javax.ejb.EJBException: Unable to connect to database. makeConnection:Io
    Exception: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=150999297)(ERR=12505)(ERROR_
    STACK=(ERROR=(CODE=12505)(EMFI=4))))
    javax.ejb.EJBException: Unable to connect to database. makeConnection:Io Exception: C
    onnection refused(DESCRIPTION=(TMP=)(VSNNUM=150999297)(ERR=12505)(ERROR_STACK=(E
    RROR=(CODE=12505)(EMFI=4))))
    <<no stack trace available>>
    My codes related are:
    private void makeConnection() throws NamingException, SQLException {
    try{
    InitialContext ic = new InitialContext();
    OracleConnectionPoolDataSource ocpds = (OracleConnectionPoolDataSource) ic.lookup(dbName);
    PooledConnection pc = ocpds.getPooledConnection();
    con = pc.getConnection();
    }catch(SQLException ex){
    throw new SQLException("makeConnection:" + ex.getMessage());
    DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
    con = DriverManager.getConnection(
    "jdbc:oracle:thin:@172.28.200.43:1521:shcd",
    "lijun", "xiaotian"); */
    public void setEntityContext(EntityContext context) {
    this.context = context;
    try {
    makeConnection();
    } catch (Exception ex) {
    throw new EJBException("Unable to connect to database. " +
    ex.getMessage());
    I believe I set JNDI and config EJB right, because I can run it with Cloudscape DB all right.
    who can tell me where is my WRONG, or tell me how to connect to Oracle9i DB?

    Hi Jhlijun,
    I am facing the same problem at the moment. However, I am not using a pooled connection. The following is my code. I am trying to connect a stateless session bean to an Oracle 9i database with result being fed back to a jsp page.
    package Test;
    import javax.naming.*;
    import java.sql.*;
    import java.util.*;
    import javax.ejb.*;
    import javax.sql.DataSource;
    import javax.sql.*;
    public class TestSessionEJBbean extends java.lang.Object implements javax.ejb.SessionBean
    String q="Select NAMETITLE,NAMEFIRST,NAMELAST from People where PeopleRSN<100";
         protected boolean create() throws java.lang.Exception
    return true;
    public TestSessionEJBbean()
    {   // EJB constructors don't have a server context.
    private void unhandledEvent( String listenerName, String methodName, java.lang.Object event )
    // method for interface javax.ejb.SessionBean
    public void ejbActivate() throws javax.ejb.EJBException, java.rmi.RemoteException
    // To Do
    // method for interface javax.ejb.SessionBean
    public void ejbPassivate() throws javax.ejb.EJBException, java.rmi.RemoteException
    // To Do
    // method for interface javax.ejb.SessionBean
    public void ejbRemove() throws javax.ejb.EJBException, java.rmi.RemoteException
    // To Do
    // method for interface javax.ejb.SessionBean
    public void setSessionContext( javax.ejb.SessionContext parm0 ) throws javax.ejb.EJBException, java.rmi.RemoteException
    this._sessionContext = parm0;          // generated helper code
    // To Do
    * Test Method
    public String Test() throws javax.ejb.EJBException
    return "Hi! I am the SessionEjbBean.";
    * Session Context of this EJB.
    * Set in 'setSessionContext()' before any 'ejbCreate()' is executed.
    private javax.ejb.SessionContext _sessionContext;
    * ejbCreate Method
    public void ejbCreate() throws javax.ejb.EJBException, javax.ejb.CreateException
    try {
    create(); // This 'create()' is used for internal initialization.
    catch( java.lang.Exception __e) {
    System.err.println( __e.toString() + " " + __e.getMessage() );
    // TODO: implement
    * getDBConnection Method
         public sun.jdbc.rowset.CachedRowSet getDBConnection() throws javax.ejb.EJBException
         String testPrint = "Starting...";//Only to check output
         Connection conn;
         sun.jdbc.rowset.CachedRowSet crset=null;
         try {
              testPrint += "before new InitialContext()....";//Only to check output
              InitialContext ic = new InitialContext();
              DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/coquit");
              testPrint += "before ds.getConnection()....";//Only to check output
              conn = ds.getConnection("coquit","coquit");          
                   testPrint += "before conn.createStatement()....";
                   Statement stmt=conn.createStatement();
                   testPrint += "before stmt.executeQuery(....)";
                   ResultSet rset = stmt.executeQuery(q);
                   testPrint += "before new sun.jdbc.rowset.CachedRowSet()";     
                   crset = new sun.jdbc.rowset.CachedRowSet();
                   testPrint += "before crset.populate(rset)";
                   crset.populate(rset);
                   rset.close();
                   stmt.close();
                   conn.close();
         } catch (NamingException ne) {
         System.out.println("TestSessionEJBbean::getDBConnection Naming Exception " + ne);
         }catch (Exception e){
         System.out.println(testPrint+"...TestSessionEJBbean::getDBConnectionException" + e);
         System.out.println("\n\n");
         e.printStackTrace();
         return crset;

  • Unknown tag name: [session] in XML node: [toplink-configuration].

    I get this exception at runtime, running TOPLink as persistence manager for my BMP WL7 beans. My sessions.xml validates according to the sessions_4_5.dtd file supplied with TOPLink, but yet I get this excpetion. Below is my complete sessions.xml, as well as teh header of the exception stack
    Sessions.xml
    <?xml version="1.0" encoding="US-ASCII"?>
    <!DOCTYPE toplink-configuration PUBLIC "-//Oracle Corp.//DTD TopLink for JAVA 4.5//EN" "sessions_4_5.dtd">
    <toplink-configuration>
         <session>
              <name>entitySession</name>
              <project-class>za.co.discovery.legalentity.persistence.TOPLinkProject</project-class>
              <session-type>
                   <server-session/>
              </session-type>
              <login>
                   <uses-external-connection-pool>true</uses-external-connection-pool>
                   <uses-external-transaction-controller>true</uses-external-transaction-controller>
              </login>
              <external-transaction-controller-class>oracle.toplink.jts.wls.WebLogicJTSExternalTransactionController</external-transaction-controller-class>
              <enable-logging>true</enable-logging>
              <logging-options>
                   <log-debug>false</log-debug>
                   <log-exceptions>true</log-exceptions>
                   <log-exception-stacktrace>true</log-exception-stacktrace>
                   <print-thread>false</print-thread>
                   <print-session>true</print-session>
                   <print-connection>true</print-connection>
                   <print-date>false</print-date>
              </logging-options>
         </session>
    </toplink-configuration>
    and the stack trace:
    1) testAll(za.co.discovery.legalentity.ejb.test.ClassVersionTest)java.rmi.RemoteException: Exception in ejbFindByPrimaryKey; nested exception is:
         EXCEPTION [TOPLINK-7094] (TopLink - 9.0.3 (Build 423)): oracle.toplink.exceptions.ValidationException
    EXCEPTION DESCRIPTION: LOCAL EXCEPTION STACK:
    EXCEPTION DESCRIPTION: Several [2] SessionLoaderExceptions were thrown:
    EXCEPTION [TOPLINK-9002] (TopLink - 9.0.3 (Build 423)): oracle.toplink.exceptions.SessionLoaderException
    EXCEPTION DESCRIPTION: Unable to load Project class [za.co.discovery.legalentity.persistence.TOPLinkProject].
    INTERNAL EXCEPTION: java.lang.ExceptionInInitializerError
    EXCEPTION [TOPLINK-9001] (TopLink - 9.0.3 (Build 423)): oracle.toplink.exceptions.SessionLoaderException
    EXCEPTION DESCRIPTION: Unknown tag name: [session] in XML node: [toplink-configuration].
    INTERNAL EXCEPTION: java.lang.reflect.InvocationTargetException
    TARGET INVOCATION EXCEPTION: java.lang.NullPointerException
         at oracle.toplink.exceptions.SessionLoaderException.finalException(Unknown Source)
         at oracle.toplink.tools.sessionconfiguration.XMLLoader.load(Unknown Source)
         at oracle.toplink.tools.sessionmanagement.SessionManager.getSession(Unknown Source)
         at oracle.toplink.tools.sessionmanagement.SessionManager.getSession(Unknown Source)
         at oracle.toplink.ejb.EJBDataStore.getSession(Unknown Source)
         at oracle.toplink.ejb.EJBDataStore.getDescriptor(Unknown Source)
         at oracle.toplink.ejb.EJBDataStore.getWrapperPolicy(Unknown Source)
         at oracle.toplink.ejb.EJBDataStore.findByPrimaryKey(Unknown Source)
         at oracle.toplink.ejb.bmp.BMPEntityBase.findByPrimaryKey(Unknown Source)
         at za.co.discovery.legalentity.ejb.LegalEntityEJB.ejbFindByPrimaryKey(LegalEntityEJB.java:67)
    all help appreciated!
    thanks
    Alwyn ([email protected])

    Hi Alwyn
    I've seen this exact problem before when the sessions.xml file has been parsed by a different version of xerces from the one provided in TopLink. Is this a possibility?
    JIM

  • What bring forth this exception?Pls Help!

    When i try to use my bmp ejb,i get these exception,who can tell me the reason of it?
    Exception:javax.transaction.TransactionRolledbackException: Exception in ejbFind
    All: java.lang.NullPointerException
    at oracle.toplink.ejb.EJBDataStore.getActiveSession(Unknown Source)
    at oracle.toplink.ejb.EJBDataStore.findAllObjects(Unknown Source)
    at oracle.toplink.ejb.EJBDataStore.findAll(Unknown Source)
    at oracle.toplink.ejb.EJBDataStore.findAll(Unknown Source)
    at oracle.toplink.ejb.bmp.BMPEntityBase.findAll(Unknown Source)
    at com.esquel.fabric.ejb.cmp.sizeType.FabSizeTypeBean.ejbFindAll(FabSize
    TypeBean.java:59)
    at com.esquel.fabric.ejb.cmp.sizeType.FabSizeTypeBean_hg9cde_Impl.ejbFin
    dAll(FabSizeTypeBean_hg9cde_Impl.java:297)
    at java.lang.reflect.Method.invoke(Native Method)
    at weblogic.ejb20.manager.BeanManagedPersistenceManager.enumFinder(BeanM
    anagedPersistenceManager.java:89)
    ....

    Need more info, i.e., when does the error happen, environment, deployment info, setup, versions...
    It looks like it can't find a session... Have you properly setup the session.xml and mapping workbench project or class?
    - Don

  • Problems using SessionBroker with WebSphere

    Hello!
    I have some problems using a SessionBroker with WebSphere 5.1. In our project we use Entity Beans with BMP and everything works fine as long as we use a ServerSession. But when I use a SessionBroker instead, even though it wraps only one session, I get a NullPointerException every time I try to access an Entity Bean. See the stack trace below.
    It is important for our project to use multiple sessions and relationships between objects coming from different sessions in the next stage of the development
    By the way: The server session uses the appropriate external transaction controller, i.e. oracle.toplink.jts.was.JTSExternalTransactionController_5_1
    Thanks in advance for your help!
    Thomas
    java.lang.NullPointerException
         at oracle.toplink.ejb.EJBDataStore.store(EJBDataStore.java:572)
         at oracle.toplink.ejb.bmp.BMPEntityBase.ejbStore(BMPEntityBase.java:115)
         at com.ibm.ejs.container.BeanManagedBeanO.store(BeanManagedBeanO.java:233)
         at com.ibm.ejs.container.EntityBeanO.beforeCompletion(EntityBeanO.java:1062)
         at com.ibm.ejs.container.ContainerTx.beforeCompletion(ContainerTx.java:542)
         at com.ibm.ejs.util.tran.SyncDriver.beforeCompletion(SyncDriver.java:279)
         at com.ibm.ws.Transaction.JTA.RegisteredSyncs.distributeBefore(RegisteredSyncs.java:110)
         at com.ibm.ws.Transaction.JTA.TransactionImpl.internalPrepare(TransactionImpl.java:1213)
         at com.ibm.ws.Transaction.JTA.TransactionImpl.commit(TransactionImpl.java:962)
         at com.ibm.ws.Transaction.JTA.TranManagerImpl.commit(TranManagerImpl.java:150)
         at com.ibm.ws.Transaction.JTA.TranManagerSet.commit(TranManagerSet.java:182)
         at com.ibm.ejs.csi.TranStrategy.commit(TranStrategy.java:712)
         at com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:167)
         at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:565)
         at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:3038)
         at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:2916)

    Unfortunately there is no way to do this in 9.0.4. This has been fixed in the 10.1.3 preview release, in 9.0.4 you will need to create your session broker in code to work around the problem.
    If you require sessions.xml support for this in 9.0.4, please contact Oracle support.

  • How am I able to use an injected EJB in a Managed Bean Constructor?

    JSF 1.2
    EJB 3.0
    Glassfish v1
    Summary:
    Managed bean injected EJB is null when referencing EJB var in constructor.
    Details:
    In my managed bean, I have a constructor that tries to reference an injected EJB, such as:
    public class CustomerBean implements Serializable {
    @EJB private CustomerSessionRemote customerSessionRemote;
    public CustomerBean() {
    List<CustomerRow> results = customerSessionRemote.getCustomerList();
    }The call within the constructor to customerSessionRemote is null - I've double checked this in Netbeans 5.5.
    How am I able to use an injected EJB in a Managed Bean Constructor?
    Thanks,
    --Todd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    OK, I was reading the article Web Tier to Go With Java EE 5: A Look at Resource Injection and I understand your statement too.
    Is there any way possible to Inject the EJB prior to the bean instance creation at all?
    Maybe, I need to approach it with the old fashion Java EE 1.4 route and using JNDI in the PostConstruct annotated method to reference the EJB in the managed bean.
    This had to been thought out before, I don't understand why a manged bean's life cycle places any injections at the end of the bean creation.
    Also, now that I understand that the @PostConstruct annotated method will be called by the container after the bean has been constructed and before any business methods of the bean are executed.
    I am trying to reference my EJB as part of the creation of the managed bean.
    What happens: the JSF page loads the managed bean and I need to populate a listbox component with data from an EJB.
    When I try to make the call to the EJB in the listbox setter method, the EJB reference is null.
    Now, I'm not for sure if the @PostConstruct annotation is going to work... hmmmm.
    ** Figured it out. ** I just needed to move the EJB logic that was still in the setter of the component I wanted to populate into the annotated PostConstruct method.

  • Constructor in EJB

    Can anybody explain me role of default parameterless constructor in EJB bean classes(session+entity).
    is it compulsory to provide these constructors?
    according to 2.0 spec (7.10.2) -
    The session bean class must have one default pareterless constructor.
    but, I have created a entity bean component( infact, using the JBuilder generated beans) which is not having any constructor, and still working fine.
    Please help me clear this constructor concept for both entity and session bean.
    Thanks.

    I may not be complete but here is my explanation
    Default constructor is required because container uses reflection to create the instances of bean classes(class.newInstance()).
    In java if you dont provide the default constructor , one is generated by compiler. That is why you are not getting any error.
    But I dont know why this point is explicitly mentioned in specs.
    May be somebody has more better explanation?
    --Ashwani                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Error while building a Webservice in Netbeans EJB Module

    I have copied the java code of a JCD doing xml to cobol copybook transformation in JCAPS, to a new webservice created in the Netbeans EJB module. There were no compilation errors. But while trying to build, I am getting errors like "java.io.printStream does not have a no-arg default Constructor" , "IllegalAnnotation Exception", "Unable to create jaxb context" etc..
    I am not able to find out why this happened... Someone please help me in resolving this issue......

    Guys,
    I am able to solve the problem. I think the problem is Language settings difference between Database and OWB repository.

  • Ejb QL 3.0 group by / return type issues

    Hello all. I have a question regarding ejb query language 3.0. I have a query that works and looks like the following:
    select e.objectId, count(distinct s1.objectId), count(distinct s2.objectId)
    from Engagement e JOIN e.surveys s1 JOIN e.surveys s2
    where s2.scope is not null
    and s2.schedule is not null
    and s2.quality is not null
    and s2.expertise is not null
    and s2.overallExperience is not null
    group by e.objectId
    While this query "works" I am unhappy with the result. What is returned by this query is an Object array of size 3. The first element is the objectId, the second the count of "sent surveys" and the third the count of "completed surveys". While this is correct for the query i want to execute a query selecting out an actual engagement object, not just the objectId. To accomplish this now, I would have to manually select out every column in engagement growing my Object array to n + 2 where n is the number of columns in Engagement. I find this unreasonable and not object oriented and would like to get an object array back that contains an Engagement object as the first element, and then the counts. However I am unaware of how to write this in ejb QL. If anyone has more experience than me please let me know if this is possible. The following code is incorrect but represents what I want to do:
    select e, count(distinct s1.objectId), count(distinct s2.objectId)
    from Engagement e JOIN e.surveys s1 JOIN e.surveys s2
    where s2.scope is not null
    and s2.schedule is not null
    and s2.quality is not null
    and s2.expertise is not null
    and s2.overallExperience is not null
    group by e /* alternatively 'group by e.objectId' or something of the like */
    For anyone else having trouble with ejb QL the best resource I have found is the BNF grammar on suns site. If you are trying to do anything complex, chances are there isn't an example out for you :(
    http://java.sun.com/javaee/5/docs/tutorial/doc/bnbuf.html#bnbui

    I realized what I wanted to the QL to do wasn't really fair. I was thinking if you wanted to do something like the above it could automatically group by first whatever the pk is on the entity and then who cares what order is next, just pick something so the SQL group by is satisfied. After more thought I realized this wasn't really a fair assumption the query engine could make and went about coding the specific items I wanted back in the select and made a corresponding entity object that acutely defined my result and used a constructor expression to create a list of these new objects. Hopefully someone else finds this useful and I appreciate the above response as well. Marking as answered.

  • Foreign key fields not getting populated in datacontrol palette for EJB app

    Hi,
    I am quite new to ADF and EJB.I developed a jdeveloper application with JSF and EJB tiers.(I am using jdeveloper 10.1.3.5)
    For database the default HR database is used.I created the entities for the EMPLOYEES and DEPARTMENTS table.
    I also created a session bean and a data control for the session bean.
    I am having a JSF page that receives all the details of a new Employee and insert into database (i.e persistEntity)
    But the Employees constructor from the Data control palette is not populating the MANAGERID and DEPARTMENTID fields which are
    the foreign key constraints for the EMPLOYEES table and hence while trying to persist the entity
    with the auto populated fields an error message is thrown.
    If I used ADF BC instead of EJB then i could populate all the fields including MANAGERID and DEPARTMENTID.
    Is it possible to have two text fields for Manager and Department in the jsf to insert the Employee details with EJB as the Model?.
    If possible how do I bind the values of these fields to the Employees entity object in EJB.
    Kindly need your insights on this.
    Thanks,
    Guna.

    Hi,
    How are you using MANAGER_ID and DEPARTMENT_ID fields, are they exposed as Long (or some other numeric type), or did you map them on the entity, something like this
    @ManyToOne
    private Employee manager; // this by default uses the column named MANAGER_ID
    @ManyToOne
    private Department department; // this by default uses the column named DEPARTMENT_ID
    .... If you mapped them (which is the right way), when you create an employee you should set these attributes before persisting the entity, by using employee.setManager(manager) and employee.setDepartment(department). Then, the foreign keys get populated automatically by your persistence provider (Toplink).
    If you are using data controls, it is a little different process to set the department and manager, but you should take a look at this tutorial http://www.oracle.com/technology/obe/obe11jdev/ps1/ejb/ejb.html , it will hopefully answer a lot of your questions.
    Pedja

  • EJB 3.0 and jndi lookup (simple question)

    hi all,
    i am newbie on Weblogic Application Server and i have some issues,
    i have weblogic application server 10.0, also i have oracle timesten in-memory database, i have configured datasource and deploy my ejb 3.0 application, but i could not done jndi lookup?
    here is my example:
    1. one stateless session bean :
    import javax.ejb.Remote;
    @Remote
    public interface InsertSubscriber {
         public void insertSubscriber(SubscriberT subscriberT);
    } 2. here is it's implementation :
    @Remote(InsertSubscriber.class)
    @Stateless
    public class InsertSubscriberBean implements InsertSubscriber {
         @PersistenceContext(unitName = "TimesTenDS")
         private EntityManager oracleManager;
         public void insertSubscriber(SubscriberT subscriber)
              try {
                   System.out.println("started");
                   oracleManager.persist(subscriber);
                   System.out.println("end");
              } catch (Exception e) {
                   e.printStackTrace();
    }3 and my test client :
    public class Client {
         public static void main(String[] args) {
              Context ctx = null;
              Hashtable ht = new Hashtable();
              ht.put(Context.INITIAL_CONTEXT_FACTORY,
                        "weblogic.jndi.WLInitialContextFactory");
              ht.put(Context.PROVIDER_URL, "t3://192.9.200.222:7001");
              try {
                   ctx = new InitialContext(ht);
                   InsertSubscriber usagefasade = (InsertSubscriber) ctx
                             .lookup("ejb.InsertSubscriberBean");               
              } catch (NamingException e) {
                   e.printStackTrace();
              } finally {
                   try {
                        ctx.close();
                   } catch (Exception e) {
                        e.printStackTrace();
    }what i did incorrect ???
    i got error like this : Name not fount exception
    when i tried to view jndi tree on weblogic server application console i found this :
         Binding Name:     
    TimestenExampleTimestenExample_jarInsertSubscriberBean_InsertSubscriber     
         Class:     
    test.InsertSubscriberBean_o7jk9u_InsertSubscriberImpl_1000_WLStub     
         Hash Code:     
    286     
         toString Results:     
    weblogic.rmi.internal.CollocatedRemoteRef - hostID: '2929168367193491522S::billing_domain:AdminServer', oid: '286', channel: 'null'what does it mean how i can done lookup to jndi ?
    Regards,
    Paata Lominadze,
    Magticom LTD.
    Georgia.

    Hi All,
    I am using the weblogic cluster with session replication and EJB 2.0 with Local entity beans.
    for fail-over session should be replicated to another server so we can achive the same session if 1st server fails.
    Suppose i m using two managed server(server1,server2) in the cluster.I am storing the object of class ABC into session and object contains the instance of Local-EntityBean home but i put that as a transient.I have also override the readObject and write object method.
    when write object is called on 1st server,readObject method should be called on second server so we will be sure that session is replicating properly.
    pleaase find the code below : -
    public IssuerPageBean() {
    initEJB();
    private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException {
    stream.defaultReadObject();
    initEJB();
    initializeCommonObject();
    private void writeObject(java.io.ObjectOutputStream stream) throws IOException {
    stream.defaultWriteObject();
    private void initEJB() {
    try {
    ic = new InitialContext();
    issuerHome = (LocalIssuerHome) ic.lookup("java:comp/env/Issuer");
    } catch (NamingException e) {
    e.printStackTrace();
    in my case if i am calling the constructor IssuerPageBean(),it calls the initEJB() method and lookeup the entity local home properly but when readObject method is called on another server only initEJB() method is called directly and getting the exception below :
    WARNING: Error during create -
    javax.naming.NameNotFoundException: remaining name: env/ejb/Client
    at weblogic.j2eeclient.SimpleContext.resolve(Ljavax/naming/Name;Z)Ljavax/naming/Context;(SimpleContext.java:35)
    at weblogic.j2eeclient.SimpleContext.resolve(Ljavax/naming/Name;)Ljavax/naming/Context;(SimpleContext.java:39)
    at weblogic.j2eeclient.SimpleContext.lookup(Ljavax/naming/Name;)Ljava/lang/Object;(SimpleContext.java:57)
    at weblogic.j2eeclient.SimpleContext.lookup(Ljavax/naming/Name;)Ljava/lang/Object;(SimpleContext.java:57)
    at weblogic.j2eeclient.SimpleContext.lookup(Ljava/lang/String;)Ljava/lang/Object;(SimpleContext.java:62)
    at weblogic.jndi.factories.java.ReadOnlyContextWrapper.lookup(Ljava/lang/String;)Ljava/lang/Object;(ReadOnlyCont
    extWrapper.java:45)
    at weblogic.jndi.internal.AbstractURLContext.lookup(Ljava/lang/String;)Ljava/lang/Object;(AbstractURLContext.jav
    a:130)
    at javax.naming.InitialContext.lookup(Ljava/lang/String;)Ljava/lang/Object;(InitialContext.java:347)
    at com.lb.equities.veda.tools.salesvault.jsp.ClientPageBean.initEJB()V(ClientPageBean.java:218)
    at com.lb.equities.veda.tools.salesvault.jsp.ClientPageBean.readObject(Ljava/io/ObjectInputStream;)V(ClientPageB
    ean.java:191)
    at java.lang.LangAccessImpl.readObject(Ljava/lang/Class;Ljava/lang/Object;Ljava/io/ObjectInputStream;)V(Unknown
    Source)
    at java.io.ObjectStreamClass.invokeReadObject(Ljava/lang/Object;Ljava/io/ObjectInputStream;)V(Unknown Source)
    at java.io.ObjectInputStream.readSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Z)Ljava/lang/Object;(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Z)Ljava/lang/Object;(Unknown Source)
    at java.io.ObjectInputStream.readObject()Ljava/lang/Object;(Unknown Source)
    at java.util.HashMap.readObject(Ljava/io/ObjectInputStream;)V(Unknown Source)
    at java.lang.LangAccessImpl.readObject(Ljava/lang/Class;Ljava/lang/Object;Ljava/io/ObjectInputStream;)V(Unknown
    Source)
    at java.io.ObjectStreamClass.invokeReadObject(Ljava/lang/Object;Ljava/io/ObjectInputStream;)V(Unknown Source)
    at java.io.ObjectInputStream.readSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Z)Ljava/lang/Object;(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Z)Ljava/lang/Object;(Unknown Source)
    at java.io.ObjectInputStream.defaultReadFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V(Unknown Source)
    at java.io.ObjectInputStream.readSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Z)Ljava/lang/Object;(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Z)Ljava/lang/Object;(Unknown Source)
    at java.io.ObjectInputStream.readObject()Ljava/lang/Object;(Unknown Source)
    at weblogic.common.internal.ChunkedObjectInputStream.readObject()Ljava/lang/Object;(ChunkedObjectInputStream.jav
    a:120)
    at weblogic.rjvm.MsgAbbrevInputStream.readObject(Ljava/lang/Class;)Ljava/lang/Object;(MsgAbbrevInputStream.java:
    121)
    at weblogic.cluster.replication.ReplicationManager_WLSkel.invoke(ILweblogic/rmi/spi/InboundRequest;Lweblogic/rmi
    /spi/OutboundResponse;Ljava/lang/Object;)Lweblogic/rmi/spi/OutboundResponse;(Unknown Source)
    at weblogic.rmi.internal.BasicServerRef.invoke(Lweblogic/rmi/extensions/server/RuntimeMethodDescriptor;Lweblogic
    /rmi/spi/InboundRequest;Lweblogic/rmi/spi/OutboundResponse;)V(BasicServerRef.java:492)
    Please help .
    Thanks in Advance.
    Edited by hforever at 03/04/2008 7:28 AM

  • Problem with ejbs in Netweaver 2004s-Class not found exception

    Hello,
    I have a webdynpro project(Newtweaver 2004s)  referring to a stateless session bean. I created an ejb and defined two public parts - part 1 contains EJB components and part 2 contains some Exception classes I refer to in my webdynpro project. I added these parts to my webdynpro project as dependencies for compile and runtime. I am able to compile and deploy the webdynpro project without any issue but I get runtime errors saying the following:
    com.sap.tc.webdynpro.services.exceptions.WDRuntimeException: Failed to create delegate for component com.test.techops.ccf.data.Data. (Hint: Is the corresponding DC deployed correctly? Does the DC contain the component?)
         at com.sap.tc.webdynpro.progmodel.generation.ControllerHelper.createDelegate(ControllerHelper.java:110)
         at com.sap.tc.webdynpro.progmodel.generation.DelegatingComponent.<init>(DelegatingComponent.java:51)
         at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.init(ClientComponent.java:382)
         at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.init(ClientApplication.java:362)
         at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.initApplication(ApplicationSession.java:707)
         at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:269)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:759)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:712)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:261)
         at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:149)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:174)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: java.lang.reflect.InvocationTargetException
         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
         at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
         at com.sap.tc.webdynpro.progmodel.generation.ControllerHelper.createDelegate(ControllerHelper.java:74)
         ... 27 more
    Caused by: java.lang.NoClassDefFoundError: com/test/techops/ccfejb/util/CCFException --> Defined in my ejb (public part)
         at com.test.techops.ccf.data.wdp.InternalData.<init>(InternalData.java:240)
         ... 32 more
    I did not have any issues when the code was running on Netweaver 2004 but now it does not seem to work when I migrated to 2004s. Can anyone please advice me on what the problem might be ?
    Thanks,
    Rama

    Hi Harsha,
    Thanks for your quick reply.
    Trying to figure it out by comparing JRE versions but still no result. I have found one problem is that
    when Gantt is loaded , Java in control panel loads all the Applets requried in to its Resources.
    These Resources are missing for the user for whom the Gantt error is produced.
    Loaded Resources can be found in the below Path :
    ControlPanel -> Java-> General Tab -> View Button -> select Resources in Show .
    So, How to load these resources ??? . Is there any setting to do that ???
    Regards,
    Ravikiran.K

  • How to access an EJB from a web application deployed in the same server

    Hey All,
    I deployed an EJB named EventServerBean to Sun Application Server 9.0, and put the client side jar file (named eventserver.jar which is generated by Sun Application Server) to C:\Sun\AppServer\lib. Now, I have a web application which is a simple jave file -- lookup EventServer EJB and invoke a remote method in this EJB. However, the web application always throws an exception "java.lang.NoClassDefFoundError: eventserver/EventServerRemoteHome"
    Here is my java class that access the ejb:
    public class Post_Event {
        public HashMap<String, String> getEventInfo(String event_name, String site) {
            System.out.println("Post_Event, the class path: " + System.getProperty("java.class.path"));       
            System.out.println("Post_Event, user.dir: " + System.getProperty("user.dir"));
            System.out.println("Post_Event, java.library.path: " + System.getProperty("java.library.path"));
            HashMap<String, String> result = null;
            EventServerRemote remote = null;
            StringTokenizer st, st2;
            // here get the event information from host
            try {
                String lookupStr = "corbaname:iiop:" + site + ":3700#ejb/EventServerBean";
                InitialContext initialContext = new InitialContext();
                EventServerRemoteHome remoteHome = (EventServerRemoteHome) javax.rmi.PortableRemoteObject.narrow(initialContext.lookup(lookupStr), EventServerRemoteHome.class);
                if (remoteHome != null) {
                    remote = remoteHome.create();
            } catch (javax.naming.NamingException ne) {
                ne.printStackTrace();
                return null;
            } catch (javax.ejb.CreateException ce) {
                ce.printStackTrace();
                return null;
            } catch (java.rmi.RemoteException re) {
                re.printStackTrace();
                return null;
            } catch (java.io.IOException ioe) {
                ioe.printStackTrace();
                return null;
            System.out.println("look up remote event server successfully.");
         result = remote.getEvent(event_name);
            return result;
        } I output the class path in this java file, and the class path DOES include the path C:\Sun\AppServer\lib where eventserver\EventServerRemoteHome.class is.
    Does anyone know why it happens? Why a java class can't find a class that is in its class path?
    appreciate any help!

    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Wael Abbas ([email protected]):
    Thank you for your great topic.
    I think you need to copy the snippet code and past it to every application, applet, servlet or JSP every time you need to use your EJB.
    Its better to include this snippet code in a simple JavaBean and use this bean as a bridge to your EJB, you may include a connect method in your JavaBean or but the connection code in the constructor and include a setters, getters and other methods to encapsulate your EJB methods.
    You can use your JavaBean in any application, applet, servlet or JSP just create an object form it and call its methods.
    Its just an idea
    I hope it will be useful.
    <HR></BLOCKQUOTE>
    null

  • Comp. Primary key class-field mapping to DB columns problem.(EJB 2.0 CMP)

    Hi!
    I have deal with EJB 2.0 CMP bean.
    I have a composite PK so use the java class to store it. And there is a corresponding field in the Entity Bean with its primary key class type.
    The problem is: when deployment tool creates sql query for the findByPrimaryKey(PKClass ck)
    where ck is an object with 3 fielde : a_id, b_id, c_id.
    it says:
    <sql>SELECT "ck" FROM "MyTable" WHERE "ck" = ? </sql>
    And it means by the "ck" simple a column in DB but NOT the composite key which has to be splited into 3 different fields. So the container can't do the proper mapping.
    Does anyone know solutions?

    I was wrong about primary key class fields, take a look at Ejb2.0 Specification (10.8.2):
    The primary key class must be public, and must have a public constructor with no parameters.
    All fields in the primary key class must be declared as public.
    The names of the fields in the primary key class must be a subset of the names of the container-managed
    fields. (This allows the container to extract the primary key fields from an instance�s container-managed
    fields, and vice versa.)
    Right now I'm using BMP and I don't have this problems. Primary keys, calculated fields and types not supported by the DB can be easily achieved. But I understand your interest on CMP, is clearly evolving!

  • Getting Tomcat 4.1 to call EJBs in WLS 8.1

    I know this is not necessarily a new topic, but we're upgrading our Tomcat
    4.1 -> WLS 5.1 to a Tomcat 4.1 -> WLS 8.1 configuration.
    Firstly, has ANYONE got Tomcat 4.1.x to work with a post 5.1 container at
    all? Ever?
    We are using the T3 protocol to talk to our beans, and the goal, of course,
    is that our Tomcat based client code will ideally not have to change.
    Our beans are all EJB 1.1, and I have them loaded into a running WLS 8.1
    container. They appear to work.
    The way I tested to see if I could talk to WLS was by using a simple client
    that I had that gets an InitialContext, and then grabs a bean.
    I now have a simple JSP that essentially does the same thing. I've bundled
    this jsp into a properly formatted WAR file.
    Within this WAR file in the WEB-INF/classes directory are the Session bean
    Home and the Session Bean Remote interface classes.
    Within the WEB-INF/lib directory is the
    c:\bea\weblogic81\server\lib\weblogic.jar, slightly modified.
    After the first attempt to load this, Tomcat would complain because the
    weblogic.jar contains the javax.servlet package, so I exploded the
    weblogic.jar file, renamed javax/servlet to javax/servlet.x, and then
    rejarred the file. This file was placed into the WEB-INF/lib directory.
    This is otherwise a default Tomcat 4.1.18 binary package.
    Here's the WAR file contents:
    ./META-INF/MANIFEST.MF
    ./WEB-INF/classes/com/pfizer/ecms/as/CustomizationSession.class
    ./WEB-INF/classes/com/pfizer/ecms/as/CustomizationSessionHome.class
    ./WEB-INF/lib/wlsx.jar <-- Edited weblogic.jar
    ./WEB-INF/web.xml
    ./test.jsp
    This is the contents of the test.jsp:
    <%@ page language="java" %>
    <%@ page import="javax.naming.*" %>
    <%@ page import="com.pfizer.ecms.as.*" %>
    <%
    try{
    System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
    "weblogic.jndi.WLInitialContextFactory");
    System.setProperty(Context.PROVIDER_URL, "t3://localhost:7001");
    InitialContext ctx = new InitialContext();
    CustomizationSessionHome csth = (CustomizationSessionHome)
    ctx.lookup("CustomizationSession");
    CustomizationSession cst = csth.create();
    catch (Throwable t) {
    System.out.println(">>>t = " + t);
    t.printStackTrace(System.out);
    %>
    <HTML>
    <BODY>
    This is the jsp.
    </BODY>
    </HTML>
    Similar code to this has been working for us for 3 years so far.
    When I try and load the JSP, it dumps a stack trace. Here's the relevant
    bits up to the Tomcat container:
    t = java.lang.NoClassDefFoundError: weblogic/rmi/extensions/server/Stubjava.lang.NoClassDefFoundError: weblogic/rmi/extensions/server/Stub
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
    at
    weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLo
    ader.java:431)
    at
    weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.
    java:169)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:217)
    at
    weblogic.utils.classfile.utils.CodeGenerator.generateClass(CodeGenerator.jav
    a:71)
    at weblogic.rmi.internal.StubGenerator.getStubClass(StubGenerator.java:672)
    at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:712)
    at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:699)
    at weblogic.rmi.extensions.StubFactory.getStub(StubFactory.java:76)
    at
    weblogic.jndi.WLInitialContextFactoryDelegate.newRootNamingNodeStub(WLInitia
    lContextFactoryDelegate.java:486)
    at
    weblogic.jndi.WLInitialContextFactoryDelegate.newRemoteContext(WLInitialCont
    extFactoryDelegate.java:449)
    at
    weblogic.jndi.WLInitialContextFactoryDelegate.newContext(WLInitialContextFac
    toryDelegate.java:345)
    at
    weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialCon
    textFactoryDelegate.java:308)
    at
    weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialCon
    textFactoryDelegate.java:234)
    at
    weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFact
    ory.java:135)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)
    at javax.naming.InitialContext.init(InitialContext.java:219)
    at javax.naming.InitialContext.<init>(InitialContext.java:175)
    at org.apache.jsp.test_jsp._jspService(test_jsp.java:51)
    What is interesting about this is that the system could "see"
    weblogic.utils.classloaders.GenericClassLoader, but THAT class could not
    find weblogic.rmi.extension.server.Stub, even though they are, ideally, at
    the same level within the Tomcat imposed hierarchy of classloaders.
    Unfortunately, we don't quite know where in that hierarchy each class is
    placed.
    Now, the culprit may well be java.security.SecureClassLoader (or, actually,
    the java.lang.ClassLoader.defineClass0), which is very high up in the
    hierarchy trying to load a the result of the StubGenerator, only to find
    that an associated class, weblogic.rmi.extensions.server.Stub, was "not
    found" because it only existed deep in the Tomcat hierarchy.
    One way that I tried to get around this was to start taking selective bits
    of of weblogic.jar and put them on the system CLASSPATH used by Tomcat when
    it starts up.
    This gets us farther along, in that more classes seem to load without
    getting the ClassDefNotFound error, but it finally leads us into this
    exception:
    The error is, with a small bit of stack dump:
    weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Environment not
    found on thread ]
    at
    weblogic.jndi.internal.NamingNodeReplicaHandler.<init>(NamingNodeReplicaHand
    ler.java:150)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAcces
    sorImpl.java:39)
    at
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstruc
    torAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
    at java.lang.Class.newInstance0(Class.java:306)
    at java.lang.Class.newInstance(Class.java:259)
    at
    weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectIn
    putStream.java:90)
    snip
    The relevant starting point is toward the middle of the stack trace:
    at
    weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:106
    at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:125)
    at
    com.pfizer.ecms.as.DataImporterSession_aiw0oz_HomeImpl_810_WLStub.create(Unk
    nown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
    at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
    .java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at com.pfizer.ecms.com.AppServer.createInstance(AppServer.java:163)
    at com.pfizer.ecms.com.AppServer.getDataImporterSession(AppServer.java:231)
    at
    com.pfizer.ecms.ws.ECMSActionServlet.testBeans(ECMSActionServlet.java:1662)
    at
    com.pfizer.ecms.ws.ECMSActionServlet.initOther(ECMSActionServlet.java:62)
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:472)
    Now, according to the Weblogic documentation, the AssertionError exception
    "is impossible". Well, that's my job they say, doing the impossible.
    Minimally, it's a meaningless message to me and pretty much stops me cold.
    I have seen other discussions about Tomcat and how it's not J2EE, etc, and
    perhaps my expectations that this will work are too high. My concern with
    that is simply that in our case, Tomcat is a Fat Client no different from
    "any other Java application". We just use Tomcat to talk to beans rather
    than a custom client. The difficulty, it seems, is in the complexities of
    the Tomcat class loaders interoperating with the expectations of Weblogics
    classes et al.
    I've got a small application that does exactly what Tomcat wants to do, so
    "weblogic works", except of course, in Tomcat.
    So, in the end, I'm curious if others have some data on getting these two
    system cooperating. If anyone has any other ideas on how to use Tomcat as a
    client of Weblogic 8 that utilizes techniques besides replacing Tomcat
    (which is not an option at the moment) I'd like to hear those as well. I
    have been fighting this for days, and tried several things, but nothing
    "obvious" seems to help.
    Weblogic 8 has a "thin client" jar, but it's only useful for RMI rather than
    T3, plus it's still not clear how we'd go about rewriting the interfaces to
    support that versus the standard EJB interfaces already created for the
    beans.
    Any assistance greatly appreciated.
    Regards,
    Will Hartung
    ([email protected])

    Of course I feel obliged to first recommend that you run your webapps
    and EJBs in WLS. There's significant performance advantages and it
    greatly simpifies your life since you don't have to deal with another
    remote failure case.
    That being said, I believe it should be possible especially with 8.1 to
    make Tomcat a WLS client.
    Answers inline.
    Will Hartung wrote:
    I know this is not necessarily a new topic, but we're upgrading our Tomcat
    4.1 -> WLS 5.1 to a Tomcat 4.1 -> WLS 8.1 configuration.
    Firstly, has ANYONE got Tomcat 4.1.x to work with a post 5.1 container at
    all? Ever?
    We are using the T3 protocol to talk to our beans, and the goal, of course,
    is that our Tomcat based client code will ideally not have to change.
    Our beans are all EJB 1.1, and I have them loaded into a running WLS 8.1
    container. They appear to work.
    The way I tested to see if I could talk to WLS was by using a simple client
    that I had that gets an InitialContext, and then grabs a bean.
    I now have a simple JSP that essentially does the same thing. I've bundled
    this jsp into a properly formatted WAR file.
    Within this WAR file in the WEB-INF/classes directory are the Session bean
    Home and the Session Bean Remote interface classes.
    Within the WEB-INF/lib directory is the
    c:\bea\weblogic81\server\lib\weblogic.jar, slightly modified.My suggestion is to ditch the weblogic.jar and the joys of trying to
    modify it. I'd instead check out 8.1's thin client support:
    http://e-docs.bea.com/wls/docs81/rmi_iiop/rmiiiop2.html#1071450
    >
    After the first attempt to load this, Tomcat would complain because the
    weblogic.jar contains the javax.servlet package, so I exploded the
    weblogic.jar file, renamed javax/servlet to javax/servlet.x, and then
    rejarred the file. This file was placed into the WEB-INF/lib directory.
    This is otherwise a default Tomcat 4.1.18 binary package.
    Here's the WAR file contents:
    ./META-INF/MANIFEST.MF
    ./WEB-INF/classes/com/pfizer/ecms/as/CustomizationSession.class
    ./WEB-INF/classes/com/pfizer/ecms/as/CustomizationSessionHome.class
    ./WEB-INF/lib/wlsx.jar <-- Edited weblogic.jar
    ./WEB-INF/web.xml
    ./test.jsp
    This is the contents of the test.jsp:
    <%@ page language="java" %>
    <%@ page import="javax.naming.*" %>
    <%@ page import="com.pfizer.ecms.as.*" %>
    <%
    try{
    System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
    "weblogic.jndi.WLInitialContextFactory");
    System.setProperty(Context.PROVIDER_URL, "t3://localhost:7001");
    InitialContext ctx = new InitialContext();
    CustomizationSessionHome csth = (CustomizationSessionHome)
    ctx.lookup("CustomizationSession");
    CustomizationSession cst = csth.create();
    catch (Throwable t) {
    System.out.println(">>>t = " + t);
    t.printStackTrace(System.out);
    %>
    <HTML>
    <BODY>
    This is the jsp.
    </BODY>
    </HTML>
    Similar code to this has been working for us for 3 years so far.
    When I try and load the JSP, it dumps a stack trace. Here's the relevant
    bits up to the Tomcat container:
    t = java.lang.NoClassDefFoundError: weblogic/rmi/extensions/server/Stubjava.lang.NoClassDefFoundError: weblogic/rmi/extensions/server/Stub
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
    at
    weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLo
    ader.java:431)
    at
    weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.
    java:169)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:217)
    at
    weblogic.utils.classfile.utils.CodeGenerator.generateClass(CodeGenerator.jav
    a:71)
    at weblogic.rmi.internal.StubGenerator.getStubClass(StubGenerator.java:672)
    at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:712)
    at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:699)
    at weblogic.rmi.extensions.StubFactory.getStub(StubFactory.java:76)
    at
    weblogic.jndi.WLInitialContextFactoryDelegate.newRootNamingNodeStub(WLInitia
    lContextFactoryDelegate.java:486)
    at
    weblogic.jndi.WLInitialContextFactoryDelegate.newRemoteContext(WLInitialCont
    extFactoryDelegate.java:449)
    at
    weblogic.jndi.WLInitialContextFactoryDelegate.newContext(WLInitialContextFac
    toryDelegate.java:345)
    at
    weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialCon
    textFactoryDelegate.java:308)
    at
    weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialCon
    textFactoryDelegate.java:234)
    at
    weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFact
    ory.java:135)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)
    at javax.naming.InitialContext.init(InitialContext.java:219)
    at javax.naming.InitialContext.<init>(InitialContext.java:175)
    at org.apache.jsp.test_jsp._jspService(test_jsp.java:51)
    What is interesting about this is that the system could "see"
    weblogic.utils.classloaders.GenericClassLoader, but THAT class could not
    find weblogic.rmi.extension.server.Stub, even though they are, ideally, at
    the same level within the Tomcat imposed hierarchy of classloaders.
    Unfortunately, we don't quite know where in that hierarchy each class is
    placed.
    Now, the culprit may well be java.security.SecureClassLoader (or, actually,
    the java.lang.ClassLoader.defineClass0), which is very high up in the
    hierarchy trying to load a the result of the StubGenerator, only to find
    that an associated class, weblogic.rmi.extensions.server.Stub, was "not
    found" because it only existed deep in the Tomcat hierarchy.
    One way that I tried to get around this was to start taking selective bits
    of of weblogic.jar and put them on the system CLASSPATH used by Tomcat when
    it starts up.
    This gets us farther along, in that more classes seem to load without
    getting the ClassDefNotFound error, but it finally leads us into this
    exception:
    The error is, with a small bit of stack dump:
    weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Environment not
    found on thread ]
    at
    weblogic.jndi.internal.NamingNodeReplicaHandler.<init>(NamingNodeReplicaHand
    ler.java:150)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAcces
    sorImpl.java:39)
    at
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstruc
    torAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
    at java.lang.Class.newInstance0(Class.java:306)
    at java.lang.Class.newInstance(Class.java:259)
    at
    weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectIn
    putStream.java:90)
    snip
    The relevant starting point is toward the middle of the stack trace:
    at
    weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:106
    at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:125)
    at
    com.pfizer.ecms.as.DataImporterSession_aiw0oz_HomeImpl_810_WLStub.create(Unk
    nown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
    at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
    .java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at com.pfizer.ecms.com.AppServer.createInstance(AppServer.java:163)
    at com.pfizer.ecms.com.AppServer.getDataImporterSession(AppServer.java:231)
    at
    com.pfizer.ecms.ws.ECMSActionServlet.testBeans(ECMSActionServlet.java:1662)
    at
    com.pfizer.ecms.ws.ECMSActionServlet.initOther(ECMSActionServlet.java:62)
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:472)
    Now, according to the Weblogic documentation, the AssertionError exception
    "is impossible". Well, that's my job they say, doing the impossible.
    Minimally, it's a meaningless message to me and pretty much stops me cold.
    Right, it's not really meant to be meaningful because customers "should"
    never see these assertions.
    I have seen other discussions about Tomcat and how it's not J2EE, etc, and
    perhaps my expectations that this will work are too high. My concern with
    that is simply that in our case, Tomcat is a Fat Client no different from
    "any other Java application". We just use Tomcat to talk to beans rather
    than a custom client. The difficulty, it seems, is in the complexities of
    the Tomcat class loaders interoperating with the expectations of Weblogics
    classes et al.
    I've got a small application that does exactly what Tomcat wants to do, so
    "weblogic works", except of course, in Tomcat.
    So, in the end, I'm curious if others have some data on getting these two
    system cooperating. If anyone has any other ideas on how to use Tomcat as a
    client of Weblogic 8 that utilizes techniques besides replacing Tomcat
    (which is not an option at the moment) I'd like to hear those as well. I
    have been fighting this for days, and tried several things, but nothing
    "obvious" seems to help.
    Weblogic 8 has a "thin client" jar, but it's only useful for RMI rather than
    T3, plus it's still not clear how we'd go about rewriting the interfaces to
    support that versus the standard EJB interfaces already created for the
    beans.I'm not sure I follow you here. You always write to RMI interfaces.
    The question is what protocol (eg T3, JRMP, IIOP) will actually run RMI.
    By default WLS uses its own protocol (t3), but most customer apps
    should run without change over IIOP.
    I'd really recommend going the thin client route. Otherwise I fear
    you'll end up with a heavily modified weblogic.jar and headaches when
    you try to install a service pack etc.
    -- Rob
    >
    Any assistance greatly appreciated.
    Regards,
    Will Hartung
    ([email protected])

Maybe you are looking for

  • Is service object comes default in purchase order

    Hi Abapers, I am a Fucntional consultant. I would like to know whether the service object comes in the Purchase order defauly or any setting is ther behind. Reg, Ashok

  • How to convert Subvi into Labview function

    Hi, I made costum vis of UDP Read and Write using dot net functions.when i tried to Make them reentrant. It is halting the application. i want to run these vis in sepate thread. Can you please tell me how can i convert  sub vi in labview fuction(like

  • Help!!! My Macbook wont turn on!!!

    Hi, I just got Macbook yesterday, all working well. I dont know anything about Macs because this is my first machine... was using windows before. Well today, after going on it, I shut it down and went up but later tried turning it on... nothing happe

  • RH9 Proj Mgr not showing the images

    I am importing topics from one RH9 project into another. The topics come in fine, with images intact. However the images are not going into the Proj Mgr "Images" folder. In fact they cannot be seen anywhere via the Project Manager (yes I have selecte

  • Logon verification servlet

    Hi! I have a servlet that verifies a user logon to a website using a MySQL database and Tomcat 5.5. Unfortunately, I get the following error: java.lang.IllegalStateException      org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacad