Bean strategy

I am new to JSP, and reading as fast as I can! I have a question about bean strategy. I want to create a web application where a bean will hold some data about some students. The data the bean needs to gather from the database is dependent upon which teacher is logging in, so I will have to pass something to the bean, so it will know how to structure the query. When the bean is instantiated (with session scope), I want it to go to a database and gather the existing information that should belong in the bean. However, later in the session, on another page if the bean is invoked (using <jsp:useBean...>), since it is in session, and already instantiated, I don't want it to go to the database - I just want to use (and possible add to or alter) the information already there.
How do I arrange things so it only goes to the database on instantiation? How do I tell the bean how to structure the database query, since a bean must have a no-argument constructor? Thanks for any advice!
Paul Phillips

I take it this session bean is specific to the user logged in, in other words, if teacher Smith is logged in, you get all the students from the DB that have a teacher named Smith?
You're correct that you cannot have a constructor with parameters in a Bean. One method might be to have a boolean value in the bean, like isInitialized. You can check this parameter in each page and if it's false, call your initialize method. Like myBean.initialize("Smith") and populate the Bean with the relavant data and set isInitilized to true.

Similar Messages

  • What's the difference between the LRU and NRU strategy for stateful session bean?

    Hi,
    Does anybody know the difference between the LRU and NRU strategy for
    stateful session bean?
    Thanks,
    Levi

    LRU makes the assumption that the bean that has been used a lot recently is
    likely to be used again.
    NRU simply removes the beans that have not been used for a stipulated amount
    of time.
    The algorithm for the LRU is much more complicated than the NRU. I think BEA
    recommends LRU for better performance and NRU when you have memory
    constraints.
    "levi" <[email protected]> wrote in message
    news:[email protected]..
    Hi,
    Does anybody know the difference between the LRU and NRU strategy for
    stateful session bean?
    Thanks,
    Levi

  • Strategy? Bean to multi page JSP

    I want to make a Bean create a table of search results. If there are too many for 1 page, I want to have a counter thingy saying entries 20 of 50 or something like that. How does the bean remember where in the search it is. And how does the JSP call the first 20 entries then the next 20 etc? I'm looking for something like you would find on say www.download.com.

    useBean scope="session"
    MySQl e.g. supports "LIMIT" where you can start from an offset and limit the number of next records. This is good for paging like you want.
    Nearly a sample for what you want: http://www.must.de/jspsample.html
    Christoph

  • Noob Question: Problem with Persistence in First Entity Bean

    Hey folks,
    I have started with EJB3 just recently. After reading several books on the topic I finally started programming myself. I wanted to develop a little application for getting a feeling of the technology. So what I did is to create a AppClient, which calls a Stateless Session Bean. This Stateless Bean then adds an Entity to the Database. For doing this I use Netbeans 6.5 and the integrated glassfish. The problem I am facing is, that the mapping somehow doesnt work, but I have no clue why it doesn't work. I just get an EJBException.
    I would be very thankfull if you guys could help me out of this. And don't forget this is my first ejb project - i might need a very detailed answer ... I know - noobs can be a real ....
    So here is the code of the application. I have a few methods to do some extra work there, you can ignore them, there are of no use at the moment. All that is really implemented is testConnection() and testAddCompany(). The testconnection() Methode works pretty fine, but when it comes to the testAddCompany I get into problems.
    Edit:As I found out just now, there is the possibility of Netbeans to add a Facade pattern to an Entity bean. If I use this, everythings fine and it works out to be perfect, however I am still curious, why the approach without the given classes by netbeans it doesn't work.
    public class Main {
        private EntryRemote entryPoint = null;
        public static void main(String[] args) throws NamingException {
            Main main = new Main();
            main.runApplication();
        private void runApplication()throws NamingException{
            this.getContext();
            this.testConnection();
            this.testAddCompany();
            this.testAddShipmentAddress(1);
            this.testAddBillingAddress(1);
            this.testAddEmployee(1);
            this.addBankAccount(1);
        private void getContext() throws NamingException{
            InitialContext ctx = new InitialContext();
            this.entryPoint = (EntryRemote) ctx.lookup("Entry#ejb.EntryRemote");
        private void testConnection()
            System.err.println("Can Bean Entry be reached: " + entryPoint.isAlive());
        private void testAddCompany(){
            Company company = new Company();
            company.setName("JavaFreaks");
            entryPoint.addCompany(company);
            System.err.println("JavaFreaks has been placed in the db");
        }Here is the Stateless Session Bean. I added the PersistenceContext, and its also mapped in the persistence.xml file, however here the trouble starts.
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    @Stateless(mappedName="Entry")
    public class EntryBean implements EntryRemote {
        @PersistenceContext(unitName="PersistenceUnit") private EntityManager manager;
        public boolean isAlive() {
            return true;
        public boolean addCompany(Company company) {
            manager.persist(company);
            return true;
        public boolean addShipmentAddress(long companyId) {
            return false;
        public boolean addBillingAddress(long companyId) {
            return false;
        public boolean addEmployee(long companyId) {
            return false;
        public boolean addBankAccount(long companyId) {
            return false;
    }That you guys and gals will have a complete overview of whats really going on, here is the Entity as well.
    package ejb;
    import java.io.Serializable;
    import javax.persistence.*;
    @Entity
    @Table(name="COMPANY")
    public class Company implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
        @Column(name="COMPANY_NAME")
        private String name;
        public Long getId() {
            return id;
        public void setId(Long id) {
            this.id = id;
       public String getName() {
            return name;
        public void setName(String name) {
            this.name = name;
            System.err.println("SUCCESS:  CompanyName SET");
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (id != null ? id.hashCode() : 0);
            return hash;
        @Override
        public boolean equals(Object object) {
            // TODO: Warning - this method won't work in the case the id fields are not set
            if (!(object instanceof Company)) {
                return false;
            Company other = (Company) object;
            if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
                return false;
            return true;
        @Override
        public String toString() {
            return "ejb.Company[id=" + id + "]";
    }And the persistence.xml file
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
      <persistence-unit name="PersistenceUnit" transaction-type="JTA">
        <provider>oracle.toplink.essentials.PersistenceProvider</provider>
        <jta-data-source>jdbc/sample</jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
          <property name="toplink.ddl-generation" value="create-tables"/>
        </properties>
      </persistence-unit>
    </persistence>And this is the error message
    08.06.2009 10:30:46 com.sun.enterprise.appclient.MainWithModuleSupport <init>
    WARNUNG: ACC003: Ausnahmefehler bei Anwendung.
    javax.ejb.EJBException: nested exception is: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
            java.rmi.RemoteException: Transaction aborted; nested exception is: javax.transaction.RollbackException: Transaktion für Zurücksetzung markiert.; nested exception is:
            javax.transaction.RollbackException: Transaktion für Zurücksetzung markiert.
    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
            java.rmi.RemoteException: Transaction aborted; nested exception is: javax.transaction.RollbackException: Transaktion für Zurücksetzung markiert.; nested exception is:
            javax.transaction.RollbackException: Transaktion für Zurücksetzung markiert.
            at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:243)
            at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:205)
            at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:152)
            at com.sun.corba.ee.impl.presentation.rmi.bcel.BCELStubBase.invoke(BCELStubBase.java:225)
            at ejb.__EntryRemote_Remote_DynamicStub.addCompany(ejb/__EntryRemote_Remote_DynamicStub.java)I spend half the night figuring out whats wrong, however I couldnt find any solution.
    If you have any idea pls let me know
    Best regards and happy coding
    Taggert
    Edited by: Taggert_77 on Jun 8, 2009 2:27 PM

    Well I don't understand this. If Netbeans created a Stateless Session Bean as a facade then it works -and it is implemented as a CMP, not as a BMP as you suggested.
    I defenitely will try you suggestion, just for curiosity and to learn the technology, however I dont have see why BMP will work and CMP won't.
    I also don't see why a stateless bean can not be a CMP. As far as I read it should not matter. Also on the link you sent me, I can't see anything related to that.
    Maybe you can help me answering these questions.
    I hope the above lines don't sound harsh. I really appreciate your input.
    Best regards
    Taggert

  • How can I create an EntityStore for a Database?  Advice on DB strategy?

    Hello All,
    How can I create an com.sleepycat.persist.EntityStore for a com.sleepycat.db.Database? Advice on DB strategy?
    I'm looking to create an application prototype that creates a database dynamically and can delete it programatically. Is openDatabase/removeDatabase what I'd want to use for that?
    So far, the Direct Persistence Layer is an amazing piece of technology and has the potential to make my team's application faster than we every though possible, so kudos to the author.
    I've built a high-security application using the DPL and a single database for hundreds millions of users. I'd like to attempt to create a database for each user for security and manageability purposes. Our mission statement doesn't allow us to execute queries for sensitive data across more than one user account at a time, so I don't get any benefit from having every user's objects in a single database. I'm investigating if giving each user their own database will speed up insert times and SecondaryIndex queries. It'll certainly be more secure as each database will be encrypted with a unique password.
    My design is that I have an app with dozens of com.sleepycat.persist.model.Entity beans which I persist and query on their Primary and secondary indexes. I've been accessing things through an EntityStore as illustrated in the Getting Started Guide. Can I access a database created with openDatabase through an EntityStore and com.sleepycat.persist.PrimaryIndex?
    Thanks in Advance,
    Steven
    Harvard Childrens Hospital Informatics Program

    I closed this as I found another way to solve my issue.
    Thanks,
    Steven

  • Is there a better way of doing this? (regards Entity Beans, CMP, J2EE5...)

    Hello everyone,
    So I'm going to blurt out two classes of code. First is a plain entity bean and the second is a helper class with two static methods to help me to convert Object into byte[] and vice versa without much worrying.
    Now the problem is, how to persist this entity bean and it's two Objects (two Lists) in a more "J2EE5 way". I just need to store these two Objects, or any Serializable Object, into persistent storage. So how to avoid this serialization by-hand that I'm doing... ?
    Thank you for your interest - and help :),
    Samuli
    Maybe using a @Lob notation or such? I've tried, but I can't get it workign. @Lob itself is not enough since it results in casting problems when retrieveing the data back from the persistent storage.
    And oh, I'm just using the simple CMP with this.. EJB using EntityManager's persist method to store and so on..
    EntityBean class (imports and packages excluded)
    @Entity
    public class MessageHandlerChain implements java.io.Serializable {
        @TableGenerator(
            name="messageHandlerChainIDGenerator",
            allocationSize=1,
            initialValue=1
        @GeneratedValue(
            generator="messageHandlerChainIDGenerator",
            strategy=GenerationType.TABLE
        @Id
        private Integer messageHandlerChainID;
        @Lob
        private byte[] messageHandlers;
        @Lob
        private byte[] messageHandlerProperties;
        @Transient
        private List<String> messageHandlersObj = new ArrayList<String>();
        @Transient
        private List<Map<String,String>> messageHandlerPropertiesObj = new ArrayList<Map<String,String>>();
         * Constructs an empty instance of <code>MessageHandlerChain</code> without any properties.
        public MessageHandlerChain() {
        public Integer getMessageHandlerChainID() {
            return messageHandlerChainID;
        public void setMessageHandlerChainID(Integer messageHandlerChainID) {
            this.messageHandlerChainID = messageHandlerChainID;
        public List<String> getMessageHandlers() {
            return messageHandlersObj;
        public void setMessageHandlers(List<String> messageHandlersObj) {
            if (messageHandlersObj == null) {
                System.out.println("[MessageHandlerChain] setMessageHandlers() can't be given a null value.");
                return;
            this.messageHandlersObj = messageHandlersObj;
        public List<Map<String,String>> getMessageHandlerProperties() {
            return messageHandlerPropertiesObj;
        public void setMessageHandlerProperties(List<Map<String,String>> messageHandlerPropertiesObj) {
            if (messageHandlerPropertiesObj == null) {
                System.out.println("[MessageHandlerChain] setMessageHandlerProperties() can't be given a null value.");
                return;
            this.messageHandlerPropertiesObj = messageHandlerPropertiesObj;
        @PrePersist
         * This method is invoked by the persistence provider prior to every persist operation.
         * This is needed because we need to convert, serialize, our <code>@Transient</code> annotated objects into <code>byte[]</code> streams
         * so that they can be written into the database.
        public void prePersist() {
            System.out.println("[MessageHandlerChain] prePersist()");
            if (messageHandlerPropertiesObj != null)
                messageHandlerProperties = BlobConverter.objectToBytes(messageHandlerPropertiesObj);
            if (messageHandlersObj != null)
                messageHandlers = BlobConverter.objectToBytes(messageHandlersObj);
        @PostLoad
         * This method is invoked by the persistence provider after every load operation.
         * This is needed because we need to convert, deserialize, <code>byte[]</code> streams back to our <code>@Transient</code> annotated objects.
        public void postLoad() {
            System.out.println("[MessageHandlerChain] postLoad()");
            try {
                if (messageHandlerProperties != null)
                    messageHandlerPropertiesObj = (List<Map<String,String>>)BlobConverter.bytesToObject(messageHandlerProperties);
                if (messageHandlers != null)
                    messageHandlersObj = (List<String>)BlobConverter.bytesToObject(messageHandlers);
            } catch (ClassCastException e) {
                System.out.println("[MessageHandlerChain] postLoad() Class Cast Exception: "+e);
        public String toString() {
            return "[MessageHandlerChain] messageHandlerChainID="+getMessageHandlerChainID()+", messageHandlers="+getMessageHandlers()+", messageHandlerProperties="+getMessageHandlerProperties();
    The helper class
    * <code>BlobConverter</code> is a simple helper class to encode and decode classes as byte[] so that they can be stored into persistent storage.
    * @author Samuli Piela
    public class BlobConverter {
        public static byte[] objectToBytes(Object o) {
            ByteArrayOutputStream baos = new ByteArrayOutputStream(512);
            ObjectOutputStream oos = null;
            try {
                oos = new ObjectOutputStream(baos);
                oos.writeObject(o);
                return baos.toByteArray();
            } catch (InvalidClassException e) {
                System.out.println("objectToBytes("+o+"): Invalid Class: "+e);
            } catch (NotSerializableException e) {
                System.out.println("objectToByte("+o+"): Object not serializable: "+e);
            } catch (Exception e) {
                System.out.println("objectToBytes("+o+"): Exception: "+e);
            } finally {
                if (oos != null) {
                    try {
                        oos.close();
                    } catch (IOException e) {
                        System.out.println("objectToBytes(): Stream could not be closed: "+e);
                if (baos != null) {
                    try {
                        baos.close();
                    } catch (IOException e) {
                        System.out.println("objectToBytes(): Stream could not be closed: "+e);
                oos = null;
                baos = null;
            return null;
        public static Object bytesToObject(byte[] byteArray) {
            ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);
            ObjectInputStream ois = null;
            try {
                ois = new ObjectInputStream(bais);
                Object o = ois.readObject();
                return o;
            } catch (ClassNotFoundException e) {
                System.out.println("bytesToObject(): Class not found: "+e);
            } catch (InvalidClassException e) {
                System.out.println("bytesToObject(): Invalid Class: "+e);
            } catch (IOException e) {
                System.out.println("bytesToObject(): IOException: "+e);
            } catch (Exception e) {
                System.out.println("bytesToObject(): Exception: "+e);
            } finally {
                if (ois != null) {
                    try {
                        ois.close();
                    } catch (IOException e) {
                        System.out.println("bytesToObject(): Stream could not be closed: "+e);
                if (bais != null) {
                    try {
                        bais.close();
                    } catch (IOException e) {
                        System.out.println("bytesToObject(): Stream could not be closed: "+e);
                ois = null;
                bais = null;
            return null;
    }

    anyone?

  • Combining single transaction between session bean & application client

    Hi All,
    The following transaction exception was encountered when trying to combine a EmployeeSessionBean.create(Employee) method in an application client:
    Application Client output
    SEVERE: null
    javax.transaction.SystemException: org.omg.CORBA.UNKNOWN: ----------BEGIN server-side stack trace----------
    org.omg.CORBA.UNKNOWN: WARNING: IOP00010002: Unknown user exception thrown by the server - exception: org.eclipse.persistence.exceptions.DatabaseException; message:
    Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: java.lang.IllegalStateException: cannot add non-XA Resource to global JTS transaction.
    Error Code: 0
    Call: INSERT INTO EmployeeDB.Project (ID, NAME) VALUES (?, ?)
    bind => [2 parameters bound]
    Query: InsertObjectQuery(domain.Project@19d2d53) vmcid: OMG minor code: 2 completed: Maybe
    at com.sun.gjc.spi.base.DataSource.getConnection(DataSource.java:117)
    at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:126)
    ----------END server-side stack trace---------- vmcid: OMG minor code: 2 completed: Maybe
    at com.sun.jts.jta.TransactionManagerImpl.commit(TransactionManagerImpl.java:332)
    at com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate.commitDistributedTransaction(JavaEETransactionManagerJTSDelegate.java:184)
    at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:873)
    at com.sun.enterprise.transaction.UserTransactionImpl.commit(UserTransactionImpl.java:208)
    at applicationClient(*applicationClient.java:229*)
    GF 3.1 Server log
    WARNING: A system exception occurred during an invocation on EJB EmployeeSessionBean method public void ejb.EmployeeSessionBean.create(Employee) javax.ejb.EJBException
    Caused by: javax.persistence.TransactionRequiredException
    at ejb.EmployeeSessionBean.create(*EmployeeSessionBean.java:27*)
    SEVERE: RAR5027:Unexpected exception in resource pooling
    java.lang.IllegalStateException: cannot add non-XA Resource to global JTS transaction.
    WARNING: RAR7132: Unable to enlist the resource in transaction. Returned resource to pool. Pool name: [ mysqlPool ]
    WARNING: RAR5117 : Failed to obtain/create connection from connection pool [ mysqlPool ]. Reason : com.sun.appserv.connectors.internal.api.PoolingException: java.lang.IllegalStateException: cannot add non-XA Resource to global JTS transaction.
    WARNING: RAR5114 : Error allocating connection : [Error in allocating a connection. Cause: java.lang.IllegalStateException: cannot add non-XA Resource to global JTS transaction.]
    WARNING: Local Exception Stack:
    Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: java.lang.IllegalStateException: cannot add non-XA Resource to global JTS transaction.
    Below is the code snippet of EmployeeSessionBean & client.applicationClient:
    @Stateless
    //@TransactionManagement(TransactionManagementType.BEAN)
    public class EmployeeSessionBean implements EmployeeService {   
        @PersistenceContext(unitName="EmployeeDB-PU")
        private EntityManager manager;
        public void create(Employee employee) {
            manager.persist(employee);  // line 27
    import javax.transaction.UserTransaction;
    public class applicationClient {
    @Resource UserTransaction tx;
    @EJB private static EmployeeService bean;
    try {
        tx.begin();
        Employee employee = new Employee()
            bean.create(employee);
    } finally {
           try {
                 tx.commit();  // line 229
    }How to relinguish transaction on EmployeeSessionBean so that all transaction could take place in applicationClient side only?
    I am trying to apply examples in Pro JPA 2 to a Java EE 6 ManyToMany application.
    Your assistance would be much appreciated.
    Thanks,
    Jack

    Hi r035198x,
    Thank you for some solid advice and would rather JPA take care of all the special cases such as keeping the records unique.
    Below are the changes made as suggested in ( 1 ), ( 2 ), ( 3 ):
    @Entity
    @IdClass(EmployeePK.class)
    @Table(name="EMPLOYEE", catalog="EmployeeDB", schema="")
    public class Employee implements Serializable {
        @Id
        @Column(name="FIRSTNAME")
        private String firstName;
        @Id
        @Column(name="SURNAME")
        private String surName;
        @Id
        @Column(name="DOB")
        @Temporal(TemporalType.DATE)
        private Date dob;
        @ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, fetch=FetchType.EAGER)
        @JoinTable(name="EMPLOYEE_PROJECT", catalog="EmployeeDB", schema="",
               joinColumns={@JoinColumn(name="FIRSTNAME_ID", referencedColumnName="FIRSTNAME"),
                            @JoinColumn(name="SURNAME_ID", referencedColumnName="SURNAME"),
                            @JoinColumn(name="DOB", referencedColumnName="DOB")},
               inverseJoinColumns={@JoinColumn(name="PROJECT_ID")})
            private Set<Project> projects = new HashSet<Project>();
    @Entity
    @Table(name="PROJECT", catalog="EmployeeDB", schema="")
    public class Project implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name="ID")
        private int id;
        @ManyToMany(mappedBy="projects", cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, fetch=FetchType.EAGER)
            @JoinTable(name="EMPLOYEE_PROJECT", catalog="EmployeeDB", schema="",
               joinColumns={@JoinColumn(name="PROJECT_ID", referencedColumnName="PROJECT_ID")},
               inverseJoinColumns={@JoinColumn(name="FIRSTNAME_ID", referencedColumnName="FIRSTNAME"),
                            @JoinColumn(name="SURNAME_ID", referencedColumnName="SURNAME"),
                            @JoinColumn(name="DOB_ID", referencedColumnName="DOB")})
        private Set<Employee> employees = new HashSet<Employee>();
    @Stateless
    public class EmployeeSessionBean implements EmployeeService {
        @PersistenceContext(unitName="EmployeeDB-PU") private EntityManager manager;
        public void create(Employee employee)
            manager.persist(employee);
    public class applicationClient {
        @EJB
        private static EmployeeService bean;
        public static void main(String[] args) {
        Employee employee = new Employee()
        bean.create(employee);   // line 209
    } I have diverged slightly from using simple primary key (EMPLOYEE_ID) to composite key class (FIRSTNAME, SURNAME, DOB) to resemble the actual application.
    Also gone back to using non - XADatasources since I am depending on JTA to do all the hardwork on the server side.
    Unfortunately, we have hit a snag once again with the following exception still:
    Application Client Output
    java.lang.reflect.InvocationTargetException
    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:597)
    at org.glassfish.appclient.client.acc.AppClientContainer.launch(AppClientContainer.java:432)
    at org.glassfish.appclient.client.AppClientFacade.launch(AppClientFacade.java:182)
    at org.glassfish.appclient.client.AppClientGroupFacade.main(AppClientGroupFacade.java:65)
    Caused by: javax.ejb.EJBException: java.rmi.MarshalException: CORBA MARSHAL 1330446347 Maybe; nested exception is:
    org.omg.CORBA.MARSHAL: ----------BEGIN server-side stack trace----------
    org.omg.CORBA.MARSHAL: WARNING: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream vmcid: OMG minor code: 11 completed: Maybe
    Caused by: java.io.StreamCorruptedException: WARNING: ORBIO00013: Stream corrupted
    ----------END server-side stack trace---------- vmcid: OMG minor code: 11 completed: Maybe
    at ejb._EmployeeService_Wrapper.create(ejb/_EmployeeService_Wrapper.java)
    at applicationClient(applicationClient.java:209)
    GF 3.1 Server log
    WARNING: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream
    org.omg.CORBA.MARSHAL: WARNING: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream vmcid: OMG minor code: 11 completed: Maybe
    Caused by: java.lang.NullPointerException
    WARNING: ORBIO00013: Stream corrupted
    java.io.StreamCorruptedException: WARNING: ORBIO00013: Stream corrupted
    Your valuable input would be very appreciated.
    Thanks,
    Jack

  • Error when deploying a simple Entity bean (EJB3) on Glassfich or Sun AS

    Hi,
    After some problems when deploying complex EJB3 Entity bean on GlassFich with a MySQL connector, I have made a simple entity.
    (test with Glassfish and Sun AS with same result)
    With netbean 5.5 => New EJB Module
    File->New->Persistence Unit (and use default values)
    Persistence.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
      <persistence-unit name="test" transaction-type="JTA">
       <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
        <jta-data-source>jdbc/sample</jta-data-source>
        <properties>
          <property name="toplink.ddl-generation" value="create-tables"/>
        </properties>
      </persistence-unit>
    </persistence>File->New->Entity Class
    EntityTest.java
    package test;
    import java.io.Serializable;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    @Entity
    public class EntityTest implements Serializable
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
        /** Creates a new instance of EntityTest */
        public EntityTest()
        public Long getId()
            return id;
        public void setId(Long id)
            this.id = id;
        public String toString()
            //TODO change toString() implementation to return a better display name
            return "" + this.id;
    }Build of project work fine but when I try to deploy (with the 2 servers), I have the error :
    Exception occured in J2EEC Phase
    com.sun.enterprise.deployment.backend.IASDeploymentException: Deployment Error -- null
    at java.util.HashMap$HashIterator.nextEntry(HashMap.java:790)
    at java.util.HashMap$KeyIterator.next(HashMap.java:823)
    at com.sun.enterprise.deployment.backend.EjbModuleDeployer.generatePolicy(EjbModuleDeployer.java:203)
    at com.sun.enterprise.deployment.backend.ModuleDeployer.doRequestFinish(ModuleDeployer.java:171)
    at com.sun.enterprise.deployment.phasing.J2EECPhase.runPhase(J2EECPhase.java:169)
    at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:95)
    at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:871)
    at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:266)
    at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:739)
    at com.sun.enterprise.management.deploy.DeployThread.deploy(DeployThread.java:174)
    at com.sun.enterprise.management.deploy.DeployThread.run(DeployThread.java:210)

    Yes, the problem is that the ejb-jar must contain at least one ejb component. It's a common misconception that Java Persistence API Entity classes are ejb components but they are NOT. The Java Persistence API was developed within the EJB 3.0 JSR and works very well with EJB but the entity classes themselves are not full-fledged ejb components.
    --ken                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • EJB 3.0 and  creating bean .xml files for DataControl

    In entity beans I haven't parameter updateble in source for column witch represent Id. I generate Id with TableGenerator strategy.
    @TableGenerator(name="TEST_SEQ", initialValue=1, allocationSize=1)
    @Column(nullable = false)
    @GeneratedValue(strategy=GenerationType.TABLE,generator="TEST_SEQ")
    @Id
    private Long id;When I create DataControl why some <entity bean>.xml files have IsUpdateable="0" parameter for attribute witch represent Id (primary key) column in entity bean?
    <Attribute Name="id" Type="java.lang.Long" IsUpdateable="0"/>In some files this parameter have default value (true), that is it does not show in source!
    If I use datacontrol (method findAll for example) with selectOneChoiche component error is:
    The selected target attribute has read-only access.Please select an updatable attributeWhen I modify files and after that refresh or create new DataControl I loss my changes in files.

    Hi Ric,
    This is the test case which describe my problem.
    Test entity:
    @Entity()
    @Table(name="TEST")
    @NamedQueries({
        @NamedQuery(name = "Test.findAll", query = "select o from Test o"),
        @NamedQuery(name = "Test.findById ", query = "select o from Testo where o.id = :id")
    public class Test extends BaseTest implements Serializable {
        @Id
        @TableGenerator(name="TEST_SEQ", initialValue=1, allocationSize=1)
        @Column(name = "ID", nullable = false)
        @GeneratedValue(strategy=GenerationType.TABLE,generator="TEST_SEQ")
        private Long id;
        private String test;
    public String getTest() {
    return test;
    public String setTest(String param) {
    this.test=param;
        public Long getId() {
            return id;
        private void setId(Long id) {
            this.id = id;
       }Base entity:
    @MappedSuperclass
    public abstract class BaseTest implements Serializable {
        @Column(name = "LASTCHANGE")
        private Timestamp lastChange;
        public MasterEntity() {
        public void setLastChange(Timestamp param) {
          this.lastChange = param;
        public Timestamp getLastChange() {
            return lastChange;
    }Main entity:
    @Entity()
    @Table(name="MAIN")
    @NamedQueries({
        @NamedQuery(name = "Test.findAll", query = "select o from Test o"),
        @NamedQuery(name = "Test.findById", query = "select o from Test o where o.id = :id")
    public class Main extends BaseTest implements Serializable {
        @Id
        @TableGenerator(name="MAIN_SEQ", initialValue=1, allocationSize=1)
        @Column(name = "ID", nullable = false)
        @GeneratedValue(strategy=GenerationType.TABLE,generator="MAIN_SEQ")
        private Long id;
        @ManyToOne
        @JoinColumn(name = "IDTEST", referencedColumnName="ID")
        private Test test;
        public Long getId() {
            return id;
        private void setId(Long id) {
            this.id = id;
        public Long getTest() {
            return test;
        private void setTest(Test test) {
            this.test = test;
       }The part code of session bean:
    public Main findById(Long id){
    return em.find(Main.class, id);
    }When I create DataControl from this sessionBean, the Test.xml(ENTITY->Test) file is generated.
    Test.xml:
    <?xml version="1.0" encoding="UTF-8" ?>
    <JavaBean xmlns=" http://xmlns.oracle.com/adfm/beanmodel" version="11.1.1.45.24"
              id="Test" Package="package.test"
              BeanClass="package.test.Test"
              isJavaBased="true">
      <Attribute Name="id" IsUpdateable="0" Type="java.lang.Long"/>
      <ConstructorMethod IsCollection="false" Type="void"
                         id="Test"/>
    </JavaBean>Questions:
    Why attribute "id" have property isUpdatable="0" ?
    I didn't specify "update=false" on my entity 'Test' for that column.
    In witch case propery isUpdateble have value "0", "1", "2", "true", "false"?

  • Error while deploying the BMP Bean

    Hi
    Here Iam trying to deploy the Account(BMP)Bean in to WebAS
    and the following error is getting while deplying.
    Jun 28, 2005 6:18:42 PM /userOut/deploy (com.sap.ide.eclipse.sdm.threading.DeployThreadManager) [Thread[Deploy Thread,5,main]] INFO:
    [027]Additional log information about the deployment.
    can any one can help me on this?
    thanks in advance.
    Error follows.........
    <!LOGHEADER[START]/>
    <!HELP[Manual modification of the header may cause parsing problem!]/>
    <!LOGGINGVERSION[1.5.3.7185 - 630]/>
    <!NAME[C:\usr\sap\J2E\JC00\SDM\program\log\sdmcl20050628124840.log]/>
    <!PATTERN[sdmcl20050628124840.log]/>
    <!FORMATTER[com.sap.tc.logging.TraceFormatter(%24d %s: %m)]/>
    <!ENCODING[Cp1252]/>
    <!LOGHEADER[END]/>
    Jun 28, 2005 6:18:40 PM  Info: -
    Starting deployment -
    Jun 28, 2005 6:18:40 PM  Info: Loading selected archives...
    Jun 28, 2005 6:18:40 PM  Info: Loading archive 'C:\usr\sap\J2E\JC00\SDM\program\temp\temp54349BankAccountApp.ear'
    Jun 28, 2005 6:18:40 PM  Info: Selected archives successfully loaded.
    Jun 28, 2005 6:18:40 PM  Info: Actions per selected component:
    Jun 28, 2005 6:18:40 PM  Info: Update: Selected development component 'BankAccountApp'/'sap.com'/'localhost'/'2005.06.28.18.18.29' updates currently deployed development component 'BankAccountApp'/'sap.com'/'localhost'/'2005.06.28.17.46.20'.
    Jun 28, 2005 6:18:40 PM  Info: The deployment prerequisites finished withtout any errors.
    Jun 28, 2005 6:18:40 PM  Info: Saved current Engine state.
    Jun 28, 2005 6:18:40 PM  Info: Error handling strategy: OnErrorStop
    Jun 28, 2005 6:18:40 PM  Info: Update strategy: UpdateAllVersions
    Jun 28, 2005 6:18:40 PM  Info: Starting: Update: Selected development component 'BankAccountApp'/'sap.com'/'localhost'/'2005.06.28.18.18.29' updates currently deployed development component 'BankAccountApp'/'sap.com'/'localhost'/'2005.06.28.17.46.20'.
    Jun 28, 2005 6:18:40 PM  Info: SDA to be deployed: C:\usr\sap\J2E\JC00\SDM\root\origin\sap.com\BankAccountApp\localhost\2005.06.28.18.18.29\temp54349BankAccountApp.ear
    Jun 28, 2005 6:18:40 PM  Info: Software type of SDA: J2EE
    Jun 28, 2005 6:18:40 PM  Info: ***** Begin of SAP J2EE Engine Deployment (J2EE Application) *****
    Jun 28, 2005 6:18:41 PM  Info: Begin of log messages of the target system:
    05/06/28 18:18:40 -  ***********************************************************
    05/06/28 18:18:41 -  Start updating EAR file...
    05/06/28 18:18:41 -  start-up mode is lazy
    05/06/28 18:18:41 -  EAR file updated successfully for 170ms.
    05/06/28 18:18:41 -  Start updating...
    05/06/28 18:18:41 -  EAR file uploaded to server for 70ms.
    05/06/28 18:18:41 -  ERROR: Not updated. Deploy Service returned ERROR:
                         java.rmi.RemoteException: Cannot deploy application sap.com/BankAccountApp..
                         Reason: null; nested exception is:
                              java.lang.NullPointerException
                              at com.sap.engine.services.deploy.server.DeployServiceImpl.update(DeployServiceImpl.java:592)
                              at com.sap.engine.services.deploy.server.DeployServiceImplp4_Skel.dispatch(DeployServiceImplp4_Skel.java:1278)
                              at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:294)
                              at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:183)
                              at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:119)
                              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:95)
                              at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:159)
                         Caused by: java.lang.NullPointerException
                              at com.sap.engine.services.ejb.EJBAdmin.needUpdate(EJBAdmin.java:337)
                              at com.sap.engine.services.deploy.server.application.UpdateTransaction.getContainersWhichNeedUpdate(UpdateTransaction.java:511)
                              at com.sap.engine.services.deploy.server.application.UpdateTransaction.getConcernedContainers(UpdateTransaction.java:467)
                              at com.sap.engine.services.deploy.server.application.DeployUtilTransaction.commonBegin(DeployUtilTransaction.java:356)
                              at com.sap.engine.services.deploy.server.application.UpdateTransaction.begin(UpdateTransaction.java:146)
                              at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhasesOnOneServer(ApplicationTransaction.java:290)
                              at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhases(ApplicationTransaction.java:323)
                              at com.sap.engine.services.deploy.server.DeployServiceImpl.makeGlobalTransaction(DeployServiceImpl.java:3023)
                              at com.sap.engine.services.deploy.server.DeployServiceImpl.update(DeployServiceImpl.java:580)
                              ... 10 more
                         For detailed information see the log file of the Deploy Service.
    05/06/28 18:18:41 -  ***********************************************************
    Jun 28, 2005 6:18:41 PM  Info: End of log messages of the target system.
    Jun 28, 2005 6:18:41 PM  Info: ***** End of SAP J2EE Engine Deployment (J2EE Application) *****
    Jun 28, 2005 6:18:41 PM  Error: Aborted: development component 'BankAccountApp'/'sap.com'/'localhost'/'2005.06.28.18.18.29':
    Caught exception during application deployment from SAP J2EE Engine's deploy service:
    java.rmi.RemoteException: Cannot deploy application sap.com/BankAccountApp..
    Reason: null; nested exception is:
         java.lang.NullPointerException
    (message ID: com.sap.sdm.serverext.servertype.inqmy.extern.EngineApplOnlineDeployerImpl.performAction(DeploymentActionTypes).REMEXC)
    Jun 28, 2005 6:18:42 PM  Info: J2EE Engine is in same state (online/offline) as it has been before this deployment process.
    Jun 28, 2005 6:18:42 PM  Error: -
    At least one of the Deployments failed -

    hi
    i have gone through the visual administrator and in deployments there is not application called BankAccountApp and again i tried to deploy the same  and this time it is giving the different error ...
    Jun 29, 2005 5:08:14 PM /userOut/deploy (com.sap.ide.eclipse.sdm.threading.DeployThreadManager) [Thread[Deploy Thread,5,main]] ERROR:
    [004]Deployment aborted
    Settings
    SDM host : INLD50043555
    SDM port : 50018
    URL to deploy : file:/C:/DOCUME1/c5065576/LOCALS1/Temp/temp20093BankAccountApp.ear
    Result
    => deployment aborted : file:/C:/DOCUME1/c5065576/LOCALS1/Temp/temp20093BankAccountApp.ear
    Aborted: development component 'BankAccountApp'/'sap.com'/'localhost'/'2005.06.28.18.18.29':
    Caught exception during application deployment from SAP J2EE Engine's deploy service:
    java.rmi.RemoteException: Cannot deploy application sap.com/BankAccountApp.. Reason: Incorrect application sap.com/BankAccountApp:Bean AccountBean: The primary key class java.lang.Object is not a legal Value Type in RMI-IIOP.Bean AccountBean: The primary key class java.lang.Object does not define method equals(java.lang.Object). The primary key class must provide suitable implementation of the equals(Object) method. EJB Specification 10.6.13.Bean AccountBean: The primary key class java.lang.Object does not define method hashCode(). The primary key class must provide suitable implementation of the hashCode() method. EJB Specification 10.6.13.Bean AccountBean. Illegal return type for method ejbCreate. The return type must be the entity bean's primary key type. EJB Specification 10.6.4.Bean AccountBean. The return type of ejbFinder methods must be the entity bean's primary key class, java.util.Collection, or java.util.Enumeration, but found com.examples.bmp.Account.Bean AccountBean. Method findByPrimaryKey(<PrimaryKeyClass>) not found in home interface com.examples.bmp.AccountHome. The remote home interface must always include the findByPrimaryKey method, which is always a single-object finder. The method must declare the primary key class as the method argument. EJB Specification 10.6.10.Error in the remote interface com.examples.bmp.Account of bean AccountBean: No corresponding business method in the bean class com.examples.bmp.AccountBean was found for method setAccountID.; nested exception is:      com.sap.engine.services.deploy.container.DeploymentException: <--Localization failed: ResourceBundle='com.sap.engine.services.deploy.DeployResourceBundle', ID='com.sap.engine.services.ejb.exceptions.deployment.EJBDeploymentException: Incorrect application sap.com/BankAccountApp:Bean AccountBean: The primary key class java.lang.Object is not a legal Value Type in RMI-IIOP.Bean AccountBean: The primary key class java.lang.Object does not define method equals(java.lang.Object). The primary key class must provide suitable implementation of the equals(Object) method. EJB Specification 10.6.13.Bean AccountBean: The primary key class java.lang.Object does not define method hashCode(). The primary key class must provide suitable implementation of the hashCode() method. EJB Specification 10.6.13.Bean AccountBean. Illegal return type for method ejbCreate. The return type must be the entity bean's primary key type. EJB Specification 10.6.4.Bean AccountBean. The return type of ejbFinder methods must be the entity bean's primary key class, java.util.Collection, or java.util.Enumeration, but found com.examples.bmp.Account.Bean AccountBean. Method findByPrimaryKey(<PrimaryKeyClass>) not found in home interface com.examples.bmp.AccountHome. The remote home interface must always include the findByPrimaryKey method, which is always a single-object finder. The method must declare the primary key class as the method argument. EJB Specification 10.6.10.Error in the remote interface com.examples.bmp.Account of bean AccountBean: No corresponding business method in the bean class com.examples.bmp.AccountBean was found for method setAccountID.
         at com.sap.engine.services.ejb.deploy.verifier.Verifier.check(Verifier.java:66)
         at com.sap.engine.services.ejb.deploy.DeployAdmin.generate(DeployAdmin.java:253)
         at com.sap.engine.services.ejb.EJBAdmin.deploy(EJBAdmin.java:2133)
         at com.sap.engine.services.ejb.EJBAdmin.makeUpdate(EJBAdmin.java:464)
         at com.sap.engine.services.deploy.server.application.UpdateTransaction.makeComponents(UpdateTransaction.java:374)
         at com.sap.engine.services.deploy.server.application.DeployUtilTransaction.commonBegin(DeployUtilTransaction.java:379)
         at com.sap.engine.services.deploy.server.application.UpdateTransaction.begin(UpdateTransaction.java:146)
         at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhasesOnOneServer(ApplicationTransaction.java:290)
         at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhases(ApplicationTransaction.java:323)
         at com.sap.engine.services.deploy.server.DeployServiceImpl.makeGlobalTransaction(DeployServiceImpl.java:3023)
         at com.sap.engine.services.deploy.server.DeployServiceImpl.update(DeployServiceImpl.java:580)
         at com.sap.engine.services.deploy.server.DeployServiceImplp4_Skel.dispatch(DeployServiceImplp4_Skel.java:1278)
         at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:294)
         at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:183)
         at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:119)
         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:95)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:159)
    ', Arguments: []--> : Can't find resource for bundle java.util.PropertyResourceBundle, key com.sap.engine.services.ejb.exceptions.deployment.EJBDeploymentException: Incorrect application sap.com/BankAccountApp:Bean AccountBean: The primary key class java.lang.Object is not a legal Value Type in RMI-IIOP.Bean AccountBean: The primary key class java.lang.Object does not define method equals(java.lang.Object). The primary key class must provide suitable implementation of the equals(Object) method. EJB Specification 10.6.13.Bean AccountBean: The primary key class java.lang.Object does not define method hashCode(). The primary key class must provide suitable implementation of the hashCode() method. EJB Specification 10.6.13.Bean AccountBean. Illegal return type for method ejbCreate. The return type must be the entity bean's primary key type. EJB Specification 10.6.4.Bean AccountBean. The return type of ejbFinder methods must be the entity bean's primary key class, java.util.Collection, or java.util.Enumeration, but found com.examples.bmp.Account.Bean AccountBean. Method findByPrimaryKey(<PrimaryKeyClass>) not found in home interface com.examples.bmp.AccountHome. The remote home interface must always include the findByPrimaryKey method, which is always a single-object finder. The method must declare the primary key class as the method argument. EJB Specification 10.6.10.Error in the remote interface com.examples.bmp.Account of bean AccountBean: No corresponding business method in the bean class com.examples.bmp.AccountBean was found for method setAccountID.
         at com.sap.engine.services.ejb.deploy.verifier.Verifier.check(Verifier.java:66)
         at com.sap.engine.services.ejb.deploy.DeployAdmin.generate(DeployAdmin.java:253)
         at com.sap.engine.services.ejb.EJBAdmin.deploy(EJBAdmin.java:2133)
         at com.sap.engine.services.ejb.EJBAdmin.makeUpdate(EJBAdmin.java:464)
         at com.sap.engine.services.deploy.server.application.UpdateTransaction.makeComponents(UpdateTransaction.java:374)
         at com.sap.engine.services.deploy.server.application.DeployUtilTransaction.commonBegin(DeployUtilTransaction.java:379)
         at com.sap.engine.services.deploy.server.application.UpdateTransaction.begin(UpdateTransaction.java:146)
         at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhasesOnOneServer(ApplicationTransaction.java:290)
         at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhases(ApplicationTransaction.java:323)
         at com.sap.engine.services.deploy.server.DeployServiceImpl.makeGlobalTransaction(DeployServiceImpl.java:3023)
         at com.sap.engine.services.deploy.server.DeployServiceImpl.update(DeployServiceImpl.java:580)
         at com.sap.engine.services.deploy.server.DeployServiceImplp4_Skel.dispatch(DeployServiceImplp4_Skel.java:1278)
         at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:294)
         at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:183)
         at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:119)
         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:95)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:159)
    (message ID: com.sap.sdm.serverext.servertype.inqmy.extern.EngineApplOnlineDeployerImpl.performAction(DeploymentActionTypes).REMEXC)
    Deployment exception : The deployment of at least one item aborted
    can anyone help me on this.
    Thanks in advance
    Vasu

  • Problem with Read-Only Entity Bean

    Hi All,
    I have an Read-Only BMP that just read data from 20 tables and stores them in a Collection. In a 'Read-Only' Entity bean, the ejbLoad() is supposed to called periodically as defined by 'read-timeout-seconds' parameter in 'weblogic-ejb-jar.xml'. But this doesn't happen. Every time I invoke the EJB, ejbCreate() and ejbLoad() get called. Any suggestions will be highly appreciated.
    Here is the content of my 'weblogic-ejb-jar.xml' file.
    <?xml version="1.0"?>
    <!DOCTYPE weblogic-ejb-jar PUBLIC
    '-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN'
    'http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd'>
    <weblogic-ejb-jar>
    <weblogic-enterprise-bean>
    <ejb-name>beanManaged</ejb-name>
         <entity-descriptor>
              <entity-cache>
                   <max-beans-in-cache>1</max-beans-in-cache>
                   <read-timeout-seconds>5</read-timeout-seconds>
                   <concurrency-strategy>ReadOnly</concurrency-strategy>
              </entity-cache>
         </entity-descriptor>
    <jndi-name>beanManaged</jndi-name>
    </weblogic-enterprise-bean>
    </weblogic-ejb-jar>
    Thanks,
    Prem

    Yes, it calls ejbLoad() at intervals defined by read-timeout-seconds, but only when bean
    is requested by the client, and the cached copy is old. If bean just sits in the cache
    unused no ejbLoad()'s will be called.
    Prem Raghupathy <[email protected]> wrote:
    The weblogic document on 'Setting Entity EJBs to Read-Only' says "WebLogic Server
    never calls ejbStore() for a read-only entity EJB. ejbLoad() is called initially
    when the EJB is created; afterwards, WebLogic Server calls ejbLoad() only at intervals
    defined by the read-timeout-seconds deployment parameter.". Here is the link to
    the document
    http://edocs.bea.com/wls/docs61/ejb/EJB_environment.html#1074846
    Dimitri Rakitine <[email protected]> wrote:
    WebLogic doesn't reload Read-Only entity beans periodically. It loads
    bean instance only when client requests it, and instance is not in the
    cache, or cached instance is older than read-timeout-seconds.
    Prem Raghupathy <[email protected]> wrote:
    This is a multi-part message in MIME format.
    ---=_newsgroups3c21148f
    Content-Type: text/plain
    Content-Transfer-Encoding: 7bit
    Rajesh,
    Thanks for your reply. I&#8217;m using WL6.1 sp1. When I log the methodcalls,
    this is what I see on the server console.
    SetEntityContext()
    ejbCreate()
    ejbPostCreate()
    ejbLoad()
    As you see, the ejbLoad() doesn&#8217;t get called every 5 sec, eventhough I
    set the &#8216;read-timeout-seconds=5&#8217; in the weblogic-ejb-jar.xml,
    Do you have a working example for Read-Only BMP on WL6.1? The examplesdirectory
    in weblogic 6.1 doesn&#8217;t have one.
    Also find attached all the files. Any suggestions will be highly appreciated.
    Thanks,
    Prem.
    Rajesh Mirchandani <[email protected]> wrote:
    What version of the Server and Service pack are you using? Turn on
    JDBC
    logging and see if every ejbLoad() hits the DB.
    prem wrote:
    Hi All,
    I have an Read-Only BMP that just read data from 20 tables and storesthem in a Collection. In a 'Read-Only' Entity bean, the ejbLoad() is
    supposed to called periodically as defined by 'read-timeout-seconds'
    parameter in 'weblogic-ejb-jar.xml'. But this doesn't happen. Every
    time I invoke the EJB, ejbCreate() and ejbLoad() get called. Any suggestions
    will be highly appreciated.
    Here is the content of my 'weblogic-ejb-jar.xml' file.
    <?xml version="1.0"?>
    <!DOCTYPE weblogic-ejb-jar PUBLIC
    '-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN'
    'http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd'>
    <weblogic-ejb-jar>
    <weblogic-enterprise-bean>
    <ejb-name>beanManaged</ejb-name>
    <entity-descriptor>
    <entity-cache>
    <max-beans-in-cache>1</max-beans-in-cache>
    <read-timeout-seconds>5</read-timeout-seconds>
    <concurrency-strategy>ReadOnly</concurrency-strategy>
    </entity-cache>
    </entity-descriptor>
    <jndi-name>beanManaged</jndi-name>
    </weblogic-enterprise-bean>
    </weblogic-ejb-jar>
    Thanks,
    Prem--
    Rajesh Mirchandani
    Developer Relations Engineer
    BEA Support
    ---=_newsgroups3c21148f
    Content-Type: application/x-zip-compressed; name="C:\WebGain\bea\wlserver6.1\samples\examples\ejb20\basic\beanManaged\beanManaged.zip"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment; filename="beanManaged.zip"
    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
    ---=_newsgroups3c21148f----
    Dimitri
    Dimitri

  • Ejb3 bean not bound

    Hi I am new to EJB . Now in our project we are using ejb3 and persistance. So tried
    a simple program which I found out from net. But when I am trying to run I am getting
    bean not bound. And in JBoss console it is showing error like
    ObjectName: jboss.jca:service=DataSourceBinding,name=DefaultDS State: NOTYETINSTALLED
    These are all my files.
    Book.java
    package de.laliluna.library;
    import java.io.Serializable;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.SequenceGenerator;
    import javax.persistence.Table;
    @Entity
    @Table(name="book")
    @SequenceGenerator(name = "book_sequence", sequenceName = "book_id_seq")
    public class Book implements Serializable {
         private static final long serialVersionUID = 7422574264557894633L;
         private Integer id;
         private String title;
         private String author;
         public Book() {
              super();
         public Book(Integer id, String title, String author) {
              super();
              this.id = id;
              this.title = title;
              this.author = author;
         @Override
         public String toString() {
              return "Book: " + getId() + " Title " + getTitle() + " Author "
                        + getAuthor();
         public String getAuthor() {
              return author;
         public void setAuthor(String author) {
              this.author = author;
         @Id
         @GeneratedValue(strategy = GenerationType.TABLE, generator = "book_id")
         public Integer getId() {
              return id;
         public void setId(Integer id) {
              this.id = id;
         public String getTitle() {
              return title;
         public void setTitle(String title) {
              this.title = title;
    }BookTestBean.java
    package de.laliluna.library;
    import java.util.Iterator;
    import java.util.List;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    @Stateless
    public class BookTestBean implements BookTestBeanLocal, BookTestBeanRemote {
         @PersistenceContext(name="FirstEjb3Tutorial")
         EntityManager em;
         public static final String RemoteJNDIName =  BookTestBean.class.getSimpleName() + "/remote";
         public static final String LocalJNDIName =  BookTestBean.class.getSimpleName() + "/local";
         public void test() {
              Book book = new Book(null, "My first bean book", "Sebastian");
              em.persist(book);
              Book book2 = new Book(null, "another book", "Paul");
              em.persist(book2);
              Book book3 = new Book(null, "EJB 3 developer guide, comes soon",
                        "Sebastian");
              em.persist(book3);
              System.out.println("list some books");
              List someBooks = em.createQuery("from Book b where b.author=:name")
                        .setParameter("name", "Sebastian").getResultList();
              for (Iterator iter = someBooks.iterator(); iter.hasNext();)
                   Book element = (Book) iter.next();
                   System.out.println(element);
              System.out.println("List all books");
              List allBooks = em.createQuery("from Book").getResultList();
              for (Iterator iter = allBooks.iterator(); iter.hasNext();)
                   Book element = (Book) iter.next();
                   System.out.println(element);
              System.out.println("delete a book");
              em.remove(book2);
              System.out.println("List all books");
               allBooks = em.createQuery("from Book").getResultList();
              for (Iterator iter = allBooks.iterator(); iter.hasNext();)
                   Book element = (Book) iter.next();
                   System.out.println(element);
    }BookTestBeanLocal.java
    package de.laliluna.library;
    import javax.ejb.Local;
    @Local
    public interface BookTestBeanLocal {
         public void test();     
    }BookTestBeanRemote.java
    package de.laliluna.library;
    import javax.ejb.Remote;
    @Remote
    public interface BookTestBeanRemote {
         public void test();
    }client part--> FirstEJB3TutorialClient.java
    package de.laliluna.library;
    import java.util.Properties;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import de.laliluna.library.BookTestBean;
    import de.laliluna.library.BookTestBeanRemote;
    * @author hennebrueder
    public class FirstEJB3TutorialClient {
          * @param args
         public static void main(String[] args) {
               * get a initial context. By default the settings in the file
               * jndi.properties are used. You can explicitly set up properties
               * instead of using the file.
                Properties properties = new Properties();
                properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
                properties.put("java.naming.factory.url.pkgs","=org.jboss.naming:org.jnp.interfaces");
                properties.put("java.naming.provider.url","localhost:1099");
              Context context;
              try {
                   context = new InitialContext(properties);
                   BookTestBeanRemote beanRemote = (BookTestBeanRemote) context
                             .lookup(BookTestBean.RemoteJNDIName);
                   beanRemote.test();
              } catch (NamingException e) {
                   e.printStackTrace();
                    * I rethrow it as runtimeexception as there is really no need to
                    * continue if an exception happens and I do not want to catch it
                    * everywhere.
                   throw new RuntimeException(e);
    }I have created persistance.xml and application.xml under META-INF folder.
    persistance.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence>
    <persistence-unit name="FirstEjb3Tutorial">
    <jta-data-source>hsqldb-db</jta-data-source>
    <properties>
    <property name="hibernate.hbm2ddl.auto"
    value="create-drop"/>
    </properties>
    </persistence-unit>
    </persistence>application.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd">
         <display-name>Stateless Session Bean Example</display-name>
         <module>
              <ejb>FirstEjb3Tutorial.jar</ejb>
         </module>
    </application>and in hsqldb-ds i have configured the driver and connection
    <datasources>
       <local-tx-datasource>
          <!-- The jndi name of the DataSource, it is prefixed with java:/ -->
          <!-- Datasources are not available outside the virtual machine -->
          <jndi-name>ejb3ProjectDS</jndi-name>
          <!-- For server mode db, allowing other processes to use hsqldb over tcp.
          This requires the org.jboss.jdbc.HypersonicDatabase mbean.
          <connection-url>jdbc:hsqldb:hsql://${jboss.bind.address}:1701</connection-url>
          -->
          <!-- For totally in-memory db, not saved when jboss stops.
          The org.jboss.jdbc.HypersonicDatabase mbean is required for proper db shutdown
          <connection-url>jdbc:hsqldb:.</connection-url>
          -->
          <!-- For in-process persistent db, saved when jboss stops.
          The org.jboss.jdbc.HypersonicDatabase mbean is required for proper db shutdown
          -->
         <!-- <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}localDB</connection-url-->
         <connection-url>jdbc:hsqldb:data/tutorial</connection-url>
          <!-- The driver class -->
          <driver-class>org.hsqldb.jdbcDriver</driver-class>
          <!-- The login and password -->
          <user-name>sa</user-name>
          <password></password>
          <!--example of how to specify class that determines if exception means connection should be destroyed-->
          <!--exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyExceptionSorter</exception-sorter-class-name-->
          <!-- this will be run before a managed connection is removed from the pool for use by a client-->
          <!--<check-valid-connection-sql>select * from something</check-valid-connection-sql> -->
          <!-- The minimum connections in a pool/sub-pool. Pools are lazily constructed on first use -->
          <min-pool-size>5</min-pool-size>
          <!-- The maximum connections in a pool/sub-pool -->
          <max-pool-size>20</max-pool-size>
          <!-- The time before an unused connection is destroyed -->
          <!-- NOTE: This is the check period. It will be destroyed somewhere between 1x and 2x this timeout after last use -->
          <!-- TEMPORARY FIX! - Disable idle connection removal, HSQLDB has a problem with not reaping threads on closed connections -->
          <idle-timeout-minutes>0</idle-timeout-minutes>
          <!-- sql to call when connection is created
            <new-connection-sql>some arbitrary sql</new-connection-sql>
          -->
          <!-- sql to call on an existing pooled connection when it is obtained from pool
             <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
          -->
          <!-- example of how to specify a class that determines a connection is valid before it is handed out from the pool
             <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyValidConnectionChecker</valid-connection-checker-class-name>
          -->
          <!-- Whether to check all statements are closed when the connection is returned to the pool,
               this is a debugging feature that should be turned off in production -->
          <track-statements/>
          <!-- Use the getConnection(user, pw) for logins
            <application-managed-security/>
          -->
          <!-- Use the security domain defined in conf/login-config.xml -->
          <security-domain>HsqlDbRealm</security-domain>
          <!-- Use the security domain defined in conf/login-config.xml or the
               getConnection(user, pw) for logins. The security domain takes precedence.
            <security-domain-and-application>HsqlDbRealm</security-domain-and-application>
          -->
          <!-- HSQL DB benefits from prepared statement caching -->
          <prepared-statement-cache-size>32</prepared-statement-cache-size>
          <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
          <metadata>
             <type-mapping>Hypersonic SQL</type-mapping>
          </metadata>
          <!-- When using in-process (standalone) mode -->
          <depends>jboss:service=Hypersonic,database=localDB</depends>
          <!-- Uncomment when using hsqldb in server mode
          <depends>jboss:service=Hypersonic</depends>
          -->
       </local-tx-datasource>
       <!-- Uncomment if you want hsqldb accessed over tcp (server mode)
       <mbean code="org.jboss.jdbc.HypersonicDatabase"
         name="jboss:service=Hypersonic">
         <attribute name="Port">1701</attribute>
         <attribute name="BindAddress">${jboss.bind.address}</attribute>    
         <attribute name="Silent">true</attribute>
         <attribute name="Database">default</attribute>
         <attribute name="Trace">false</attribute>
         <attribute name="No_system_exit">true</attribute>
       </mbean>
       -->
       <!-- For hsqldb accessed from jboss only, in-process (standalone) mode -->
       <mbean code="org.jboss.jdbc.HypersonicDatabase"
         name="jboss:service=Hypersonic,database=localDB">
         <attribute name="Database">localDB</attribute>
         <attribute name="InProcessMode">true</attribute>
       </mbean>
    </datasources>.
    Edited by: bhanu on Dec 2, 2008 9:45 AM

    Hi jadespirit ,
    I have the same problem in the same Book example ,my ejb3 project name "BaseHotele" so i follow what u said and this is my persistence.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence>
    <persistence-unit name="FirstEjb3Tutorial">
    *<jta-data-source>java:BaseHoteleDS</jta-data-source>*
    <properties>
    <property name="hibernate.hbm2ddl.auto"
    value="create-drop"/>
    </properties>
    </persistence-unit>
    </persistence>
    But it didn't work i have always HotelTestBean not bound!!
    Help PLEASE i think that i had a mistake in the persistence.xml:i have 2 days searching for solutions without a good result!!!!!!!!!!!!!

  • NON-transactional session bean access entity bean

    We are currently profiling our product using Borland OptmizeIt tool, and we
    found some interesting issues. Due to our design, we have many session beans which
    are non transactional, and these session beans will access entity beans to do
    the reading operations, such as getWeight, getRate, since it's read only, there
    is no need to do transaction commit stuff which really takes time, this could
    be seen through the profile. I know weblogic support readonly entity bean, but
    it seems that it only has benefit on ejbLoad call, my test program shows that
    weblogic still creates local transaction even I specified it as transaction not
    supported, and Transaction.commit() will always be called in postInvoke(), from
    the profile, we got that for a single method call, such as getRate(), 80% time
    spent on postInvoke(), any suggestion on this? BTW, most of our entity beans are
    using Exclusive lock, that's the reason that we use non-transactional session
    bean to avoid dead lock problem.
    Thanks

    Slava,
    Thanks for the link, actually I read it before, and following is what I extracted
    it from the doc:
    <weblogic-doc>
    Do not set db-is-shared to "false" if you set the entity bean's concurrency
    strategy to the "Database" option. If you do, WebLogic Server will ignore the
    db-is-shared setting.
    </weblogic-doc>
    Thanks
    "Slava Imeshev" <[email protected]> wrote:
    Hi Jinsong,
    You may want to read this to get more detailed explanation
    on db-is-shared (cache-between-transactions for 7.0):
    http://e-docs.bea.com/wls/docs61/ejb/EJB_environment.html#1127563
    Let me know if you have any questions.
    Regards,
    Slava Imeshev
    "Jinsong HU" <[email protected]> wrote in message
    news:[email protected]...
    Thanks.
    But it's still not clear to me in db-is-shared setting, if I specifiedentity
    lock as database lock, I assumed db-is-shared is useless, because foreach
    new
    transaction, entity bean will reload data anyway. Correct me if I amwrong.
    Jinsong
    "Slava Imeshev" <[email protected]> wrote:
    Jinsong,
    See my answers inline.
    "Jinsong Hu" <[email protected]> wrote in message
    news:[email protected]...
    Hi Slava,
    Thanks for your reply, actually, I agree with you, we need to
    review
    our db
    schema and seperate business logic to avoid db lock. I can not say,guys,
    we need
    to change this and that, since it's a big application and developedsince
    EJB1.0
    spec, I think they are afraid to do such a big change.Total rewrite is the worst thing that can happen to an app. The
    better aproach would be identifying the most critical piece and
    make a surgery on it.
    Following are questions in my mind:
    (1) I think there should be many companies using weblogic serverto
    develop
    large enterprise applications, I am just wondering what's the maintransaction/lock
    mechanism that is used? Transional session / database lock,
    db-is-shared
    entity
    I can't say for the whole community, as for my experience the standard
    usage patthern is session fasades calling Entity EJBs while having
    Required TX attribute plus plain transacted JDBC calls for bulk
    reads or inserts.
    is the dominant one? It seems that if you speficy database lock,
    the
    db-is-shared
    should be true, right?Basically it's not true. One will need db-is-shared only if thereare
    changes
    to the database done from outside of the app server.
    (2) For RO bean, if I specify read-idle-timeout to 0, it shouldonly
    load
    once at the first use time, right?I assume read-timeout-seconds was meant. That's right, but if
    an application constantly reads new RO data, RO beans will be
    constantly dropped from cache and new ones will be loaded.
    You may want to looks at server console to see if there's a lot
    of passivation for RO beans.
    (3) For clustering part, have anyone use it in real enterpriseapplication?
    My concern, since database lock is the only way to choose, how aboutthe
    affect
    of ejbLoad to performance, since most transactions are short live,if high
    volume
    transactions are in processing, I am just scared to death about
    the
    ejbLoad overhead.
    ejbLoad is a part of bean's lifecycle, how would you be scared ofit?
    If ejbLoads take too much time, it could be a good idea to profile
    used SQLs. Right index optimization can make huge difference.
    Also you may want cosider using CMP beans to let weblogic
    take care about load optimization.
    (4) If using Optimization lock, all the ejbStore need to do
    version
    check
    or timestamp check, right? How about this overhead?As for optimistic concurrency, it performs quite well as you can
    use lighter isolation levels.
    HTH,
    Slava Imeshev
    "Jinsong Hu" <[email protected]> wrote in message
    news:[email protected]...
    We are using Exclusive Lock for entity bean, because of we do
    not
    want
    to
    load
    data in each new transaction. If we use Database lock, that means
    we
    dedicate
    data access calls to database, if database deadlock happens,
    it's
    hard
    to
    detect,
    while using Exclusive lock, we could detect this dead lock in
    container
    level.
    The problem is, using Exclusive concurrency mode you serialize
    access to data represented by the bean. This aproach has negative
    effect on ablity of application to process concurrent requests.As
    a
    result the app may have performance problems under load.
    Actually, at the beginnning, we did use database lock and usingtransactional
    The fact that you had database deadlocking issues tells that
    application logic / database schema may need some review.
    Normally to avoid deadlocking it's good to group database
    operations mixing in updattes and inserts into one place so
    that db locking sequence is not spreaded in time. Moving to
    forced serialized data access just hides design/implementation
    problems.
    session bean, but the database dead lock and frequent ejbLoad
    really
    kill
    us,
    so we decided to move to use Exclusive lock and to avoid dead
    lock,
    we
    change
    some session bean to non-transactional.Making session beans non-transactions makes container
    creating short-living transactions for each call to entity bean
    methods. It's a costly process and it puts additional load to
    both container and database.
    We could use ReadOnly lock for some entity beans, but since weblogicserver will
    always create local transaction for entity bean, and we found
    transaction
    commit
    is expensive, I am arguing why do we need create container leveltransaction for
    read only bean.First, read-only beans still need to load data. Also, you may seeRO
    beans
    contanly loading data if db-is-shared set to true. Other reason
    can
    be
    that
    RO semantics is not applicable the data presented by RO bean (forinstance,
    you have a reporting engine that constantly produces "RO" data,
    while
    application-consumer of that data retrieves only new data and neverasks
    for "old" data). RO beans are good when there is a relatively stable
    data
    accessed repeatedly for read only access.
    You may want to tell us more about your app, we may be of help.
    Regards,
    Slava Imeshev
    I will post the performance data, let's see how costful
    transaction.commit
    is.
    "Cameron Purdy" <[email protected]> wrote:
    We are currently profiling our product using Borland
    OptmizeIt
    tool,
    and we
    found some interesting issues. Due to our design, we have
    many
    session
    beans which
    are non transactional, and these session beans will access
    entity
    beans
    to
    do
    the reading operations, such as getWeight, getRate, since
    it's
    read
    only,
    there
    is no need to do transaction commit stuff which really takes
    time,
    this
    could
    be seen through the profile. I know weblogic support readonly
    entity
    bean,
    but
    it seems that it only has benefit on ejbLoad call, my test
    program
    shows
    that
    weblogic still creates local transaction even I specified
    it
    as
    transaction not
    supported, and Transaction.commit() will always be called
    in
    postInvoke(),
    from
    the profile, we got that for a single method call, such as
    getRate(),
    80%
    time
    spent on postInvoke(), any suggestion on this? BTW, most of
    our
    entity
    beans are
    using Exclusive lock, that's the reason that we use
    non-transactional
    session
    bean to avoid dead lock problem.I am worried that you have made some decisions based on an improper
    understand of what WebLogic is doing.
    First, you say "non transactional", but from your description
    you
    should
    have those marked as tx REQUIRED to avoid multiple transactions
    (since
    non-transactional just means that the database operation becomesits
    own
    little transaction).
    Second, you say you are using exclusive lock, which you shouldonly
    use
    if
    you are absolutely sure that you need it, (and note that it
    does
    not
    work in
    a cluster).
    Peace,
    Cameron Purdy
    Tangosol, Inc.
    http://www.tangosol.com/coherence.jsp
    Tangosol Coherence: Clustered Replicated Cache for Weblogic
    "Jinsong Hu" <[email protected]> wrote in message
    news:[email protected]...
    >

  • Question on reentrant beans

    Hi all,
    If there is a StatelessSessionBean that has two methods in its remote interface
    say
    method1() and method2(). In the bean implementation consider that method1() calls
    method2(),
    now my questions are:
         1) Can this scenario be called as re-entrant.
         2) What is the problem of calling a method in the same bean using "this" keyword.
         3) What problems in the transactions will happen in this scenario.
    Thanks in advance,
    Chandru

    Stefan,
    You are mixing terminology.
    What you are describing is concurrency (although now that I think about
    it, if you somehow manage to associate your two threads with the same
    transactional context then you'll possibly create a transaction diamond).
    I don't think there is a situation at all when Weblogic will allow a
    second thread to access the instance while another thread is still in
    the middle of an EJB call. Depending on the concurrency strategy for
    entity beans you can get parallel access to instances with the same PKs
    but it will not be one and the same instance.
    For stateless session beans each call can hit a different available
    instance since it doesn't matter which one will do the job.
    You can get a reentrant call when from inside an EJB (I haven't dealt
    with statefull session EJBs but it's probably very similar) business
    method call you either call another EJB business method via the
    remote/local interfaces (ejbObject) that will hit the same instance (if
    you are in the same transaction you already have the access to that
    particular instance so there is no concurrency issue).
    Then you are reentering the same instance via the remote/local interface
    and it is going to be a reentrant call.
    If you simply call the method it is a normal Java method call and the
    container doesn't get involved and there you can get recursion.
    Dejan
    Stefan wrote:
    Re-entrance is when the executing thread A gets suspended in the
    middle of a method call and thread B calls the same method on the very
    same object. When thread A gets to continues two things might happen:
    1 The method uses only stack variables and A is able to carry on its
    work. 2 If the metod have static variables (not for Java) or uses any
    memeber variables thread B might have messed things upp for A (this
    situation calls for some sort of synchronisation). In situation 1 we
    have a re-entrant method.
    method1 calling method1 is called recursion.
    Fortunattly having more than one thread operating on one object should
    not happen with EJBs. It can happen if your EJB uses som static
    methods or singeltons.
    Regards
    /Stefan

  • Stateful Session Bean accesed by two JSPs.

    Hi there,
    We are having quite an issue; we have an application that stores session
    state in an stateful session bean. And we have noticed some parts of the
    application create a situation where is possible that two frames -and so two
    jsp- access the session bean at the same time. And, of course, it´s going to
    be the same instance of the session bean..... what will be the behaviour in
    this case?. Will the requests be serialized, an exception will be thrown or
    the EJB will be destroyed?. Not very sure of what would happen. I suppose
    there could be some problems with this-. I would appreciate any help.
    Many thanks. Best regards.

    Hrm. EJB spec is quite clear on what will happen (RemoteException thrown) if
    the second client attempts to use Stateful Session bean which is already in
    use (and the bean will not be destroyed - container will simply throw an
    exception after failing to acquire a lock on the bean instance without waiting
    (allow-concurrent-calls option in WebLogic allows client call to wait to acquire
    lock - this was probably added as a convinience feature for applications which
    use frames)).
    So, normally your application has to ensure that no 2 clients are able to use
    the same stateful session bean concurrently, or use allow-concurrent-calls option,
    which will do that for you, but the application will become non portable.
    Dimitri
    PS: Thanks. Maine Coon cats are the best. Ours is a 22-pound giant ;-)
    Pinklon Thomas <[email protected]> wrote:
    Hi Dimitri,
    Thnaks a lot for the help:one thing that I do not know if it´s an issue is
    that calls come from different JSPs; the strategy I have seen in another Web
    application servers is trying to activate the EJB in the middle of another
    transaction... In this situation, the container cannot activate the EJB,
    roolback the transaction and destroys the EJB.... Would Weblogic feature
    avoid this?. I will investigate on my part....
    Many many thnaks. Nice cats.
    "Dimitri Rakitine" <[email protected]> wrote in message
    news:[email protected]...
    In 6.1 you can set allow-concurrent-calls to true in this situation:
    <!--
    The allow-concurrent-calls specifies whether a stateful session bean
    instance will allow concurrent method calls. The value of this
    element may be either "True" or "False". The default value is
    "False". When a stateful session bean instance is currently in a
    method call and another (concurrent) method call arrives on the
    server, the EJB specification requires that the server throw a
    RemoteException. By default, allow-concurrent-calls is false, and the
    EJB container will follow the EJB specification. When this value is
    set to true, the EJB container will block the concurrent method call
    and allow it to proceed when the previous call has completed.
    Used in: stateful-session-descriptor
    -->
    Pinklon Thomas <[email protected]> wrote:
    Hi there,
    We are having quite an issue; we have an application that stores
    session
    state in an stateful session bean. And we have noticed some parts of the
    application create a situation where is possible that two frames -and sotwo
    jsp- access the session bean at the same time. And, of course, it´sgoing to
    be the same instance of the session bean..... what will be the behaviourin
    this case?. Will the requests be serialized, an exception will be thrownor
    the EJB will be destroyed?. Not very sure of what would happen. Isuppose
    there could be some problems with this-. I would appreciate any help.
    Many thanks. Best regards.--
    Dimitri

Maybe you are looking for