Type-safe enum in CMP EJB field...

Is it possible to use a type-safe enum like this in an EJB CMP field?
I have tried to do that but although the code compiles I get errors.
package dataBeansPkg;
import java.io.Serializable;
import java.io.ObjectStreamException;
import java.util.HashMap;
public final class Estado implements Serializable
private static final String ACTIVODESC = "Activo";
private static final String INACTIVODESC = "Inactivo";
private static final String ELIMINADODESC = "Eliminado";
private static final String BLOQUEADODESC = "Bloqueado";
private static HashMap VALUES = new HashMap();
private final String status;
private final String descripcion;
public static final Estado ACTIVO = new Estado("A", ACTIVODESC);
public static final Estado INACTIVO = new Estado("I", INACTIVODESC);
public static final Estado ELIMINADO = new Estado("E", ELIMINADODESC);
public static final Estado BLOQUEADO = new Estado("B", BLOQUEADODESC);
protected Estado()
this.status = null;
this.descripcion = null;
protected Estado(String estado, String descripcion)
this.status = estado;
this.descripcion = descripcion;
VALUES.put(estado, this);
public String getValor() { return status; }
public String getEstado() { return status; }
public String getDescripcion() { return descripcion; }
public String toString() { return getValor(); }
public final boolean equals(Object o) { return super.equals(o); }
public final int hashCode() { return super.hashCode(); }
public static Estado find(String estado)
if(VALUES.containsKey(estado)) {
return (Estado)VALUES.get(estado);
return null;
public Object readResolve()
Object result = find(status);
if(result != null)
return result;
else
return INACTIVO; // valor por omision
Whenever I run a client using the bean with a field associated to this enum, I get...
java.io.StreamCorruptedException: Caught EOFException while reading the stream header
and
Error loading state: java.io.StreamCorruptedException: Caught EOFException while reading the stream header
Is it possible to use a type-safe enum as a field in an CMP bean?

Yep... I think that's what I found. By using public methods in my enum class to map it's string member to the EJB field I was able to effectively use my enum in the EJB. The container does it work with a String but the EJB's clients only deal with a enum field. That's what I originally intended so, thanks for your response.

Similar Messages

  • Type Safe enum with Serializable issue

    The following code is copied from www.javapractices.com
    public final class SimpleSuit {
      public static final SimpleSuit CLUBS = new SimpleSuit ("Clubs");
      public static final SimpleSuit DIAMONDS = new SimpleSuit ("Diamonds");
      public static final SimpleSuit HEARTS = new SimpleSuit ("Hearts");
      public static final SimpleSuit SPADES = new SimpleSuit ("Spades");
      public String toString() {
        return fName;
      private final String fName;
      private SimpleSuit(String aName) {
        fName = aName;
    }It is known to be typesafe and able to perform object equality.
    Eg:
    SimpleSuit s = SimpleSuit.SPADES;
    if (s == SimpleSuit.SPASES)
    ..Thus, it is simple and fast enough by object equality comparison.
    But if I implement SimpleSuit with java.io.Serializable and send it over the network, of course that would become a totally new objects, therefore I can't usr object equality anymore. Any solution to make it work over Serialization?
    Thanks,
    Jax

    A serializable class may provide a 'readResolve' method. This is used to "designate a replacement when an instance of it is read".
    A common approach with enums is to provide a unique identifier (e.g, a string name, or integer id). The enum class can then provide a readResolve method which determines the correct replacement instance based on this id.
    An example of this is also available on the javapractices site you mentioned:
    http://www.javapractices.com/Topic1.cjp

  • Additional field in join table for CMP EJB

    Hello,
    I'm trying to perform this task using CMP entity beans:
    The entity A has a CMR relation of cardinality m-n with entity B (bidirectional) (This is working fine).
    I want to add a parameter to the relation.
    Ex : When I find that A1 is linked to B1, I need to perform "x" times an action. x would be my parameter, and I would have kept this parameter as an additional column in the join table A_TO_B.
    Could anyone provide an example of how to perform this with CMP EJB?
    NOTE: I'm using OC4J 10g 9.0.4 standalone (and cannot change my version).
    Thanks
    Tanguy

    Manohar,
    You need to create an append structure for table VBAP (for example ZAVBAP) using SE11. In this structure you create your ZZ fields. If you need a non-SAP domain/data element for your field then you need to create it first using the same transaction and activate it. Attach ZAVBAP to VBAP so the SE11 shows:
    .APPEND in the Fields column and
    ZAVBAP in the Field type column.
    Your ZZ fields will be shown automatically.
    When you have finished then activate your ZAVBAP structure. You will notice when you go VA01 (for example) that a lot of programs are being recompiled. Don't worry. It will be ok.
    The user-exit screen number for items is 8459 (in program SAPMV45A).
    Thanks,
    Wojtek

  • Adding more fields to a CMP EJB

    I'm using Sun's ONE studio 5, Sun ONE AS, and PointBase-db.
    I use the CMP EJB wizard to generate the skeleton for a CMP EJB, and specify to use a database-table from PointBase as the CMP-persistant fields.
    The problem arises when i want to add futher fields, when i try adding the in the IDE, i cant deploy the application(!)
    What am i doing wrong?
    Thank you in advance!

    Please see response to
    http://forum.java.sun.com/thread.jsp?forum=136&thread=444274&start=0&range=15#2191688
    vbk

  • Composite key field is not a simple type or enum

    According to the docs here - http://www.oracle.com/technology/documentation/berkeley-db/je/java/index.html?com/sleepycat/persist/model/PrimaryKey.html - you can use "A composite key class containing one or more simple type or enum fields" as a key field. When we try that we get "java.lang.IllegalArgumentException: Composite key field is not a simple type or enum: Result$Key.recordId". Am I misreading the docs?
    Thanks,
    Trevor
    @Persistent
    public final class RecordKey {
    @KeyField(1)
    private final String name;
    @KeyField(2)
    private final int duplicateNumber;
    RecordKey(final String name, final int duplicateNumber) {
    this.name = name;
    this.duplicateNumber = duplicateNumber;
    RecordKey() {
    this.name = null;
    this.duplicateNumber = -1;
    @Persistent
    static final class Key {
    @KeyField(1)
    private final RecordKey recordId;
    @KeyField(2)
    private final String key;
    Key(final RecordKey recordId, final String key) {
    this.recordId = recordId;
    this.key = key;
    Key() {
    this.recordId = null;
    this.key = null;
    }

    Hi Trevor,
    You're nesting one key class inside another. All fields of a key class must be simple types or enums, which is what the exception message is trying to say. If you want all those fields in your key class, you'll have to include them in a single flattened class.
    Neither nesting of key classes nor inheritance of key classes is supported. We have enhancements filed to support these in the future, but no concrete plans.
    --mark                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • BLOB field in Entity CMP EJB (DB = Oracle)

    I use Borland App Server 4.5.1 .
    I have table, which has BLOB column.
    My first question is:
    What datatype should corresponding field in Entity CMP EJB have?
    I set it to byte [].
    When I deal with BLOB data of small size, everything is OK.
    But when the size of BLOB data is few larger,
    when I insert new record
    an Oracle error happens: a sort of
    "TNS adapter error: end of communication chanel"
    I use thin jdbc-driver.
    So does anybody have an experience in working with BLOB field in Entity CMP EJB (DB = Oracle) ?
    may be, the solution is to write BMP fields in Entity EJB,
    i.e. to write own methods
    set[BLOB_COLUMN](...),
    get[BLOB_COLUMN]() ?
    Thank you for answers.

    I have tried with db2 7.1/ IAS 4.0 and it works fine
    I use Borland App Server 4.5.1 .
    I have table, which has BLOB column.
    My first question is:
    What datatype should corresponding field in Entity CMP
    EJB have?
    I set it to byte [].this is perfect
    When I deal with BLOB data of small size, everything
    is OK.
    But when the size of BLOB data is few larger,
    when I insert new record
    an Oracle error happens: a sort of
    "TNS adapter error: end of communication chanel"In db2 there is a max size limit on the blob column. please check if such limit for oracle database.
    >
    I use thin jdbc-driver.
    So does anybody have an experience in working with
    BLOB field in Entity CMP EJB (DB = Oracle) ?
    may be, the solution is to write BMP fields in Entity
    EJB,
    i.e. to write own methods
    set[BLOB_COLUMN](...),
    get[BLOB_COLUMN]() ?this is a good approach
    >
    Thank you for answers.Regards,
    -- Ashish

  • Type safe bean interfaces (Java 5) and JBoss IDE

    I've posted this help request already in the appropriate JBoss forum.
    But unfortunately still without any response.
    Latest JBoss IDE versions support type safe business methods e.g. like
         * only for testing
         * @ejb.interface-method view-type = "both"
         * @ejb.permission role-name = "Default"
        public ArrayList<String> getSomeStrings()
        }But the interface methods will be always generated unsafe like
        * only for testing
       public java.util.ArrayList getSomeStrings(  )
          throws java.rmi.RemoteException;Is this a known problem or is something wrong with my xdoclet configuration?
    Thanks in advance
    Torsten

    Yep... I think that's what I found. By using public methods in my enum class to map it's string member to the EJB field I was able to effectively use my enum in the EJB. The container does it work with a String but the EJB's clients only deal with a enum field. That's what I originally intended so, thanks for your response.

  • Error when accessing CMP EJB methods

    I get a strange error, when I access a getter method in my remote interface to query the variables in my CMP EJB. I use Jdev 3.2 agains Oracle 8.1.7.
    I can see that the error must be originating from the persistance manager BC4J XML, but not sure how to resolve it, any help is appreciated.
    The line having the problem is the second line;
    portofolio.Portofolio remoteInterface = homeInterface.findByPrimaryKey("Fantacy");
    System.out.println("The record is " + remoteInterface.getPORTO_TYPE());
    The full error stack is as follows ( I don't see why there is a complaint about an update statement ?? );
    Caught RuntimeException in remote method; nested exception is:
    oracle.jbo.DMLException:JBO-26041: Failed to post data to database during "Update": SQL Statement " UPDATE PORTOFOLIO Portofolio123 SET VALUE=:1,PORTO_TYPE=:2,REAL_IND=:3,PORTO_NAME=:4,VALUED_ON=:5 WHERE PORTO_NAME=:6".
    Remote Stack Trace:
    oracle.jbo.DMLException: JBO-26041: Failed to post data to database during "Update": SQL Statement " UPDATE PORTOFOLIO Portofolio123 SET VALUE=:1,PORTO_TYPE=:2,REAL_IND=:3,PORTO_NAME=:4,VALUED_ON=:5 WHERE PORTO_NAME=:6".
    at oracle.jbo.server.OracleSQLBuilderImpl.doEntityDML(OracleSQLBuilderImpl.java:348)
    at oracle.jbo.server.EntityImpl.doDML(EntityImpl.java:3293)
    at oracle.jbo.server.EntityImpl.postChanges(EntityImpl.java:2588)
    at oracle.jbo.server.DBTransactionImpl.postChanges(DBTransactionImpl.java:1628)
    at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:997)
    at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:1151)
    at oracle.jbo.server.ejb.cmp.CMPTransactionImpl.beforeCompletion(CMPTransactionImpl.java:74)
    at oracle.aurora.transaction.OracleTransaction.localBeforeCompletion(OracleTransaction.java)
    at oracle.aurora.transaction.OracleTransactionManager.localBeforeCompletion(OracleTransactionManager.java)
    at oracle.aurora.transaction.OracleTransactionManager.rollback(OracleTransactionManager.java)
    at oracle.aurora.transaction.OracleTransactionManager.rollback(OracleTransactionManager.java)
    at oracle.aurora.ejb.server.AuroraEnterpriseBean.__txn_rollback(AuroraEnterpriseBean.java)
    at oracle.aurora.ejb.gen._test_omeed_Portofolio.EjbObject_Portofolio.getPORTO_TYPE(oracle/aurora/ejb/gen/_test_omeed_Portofolio/EjbObject_Portofolio:228)
    at portofolio._tie_Portofolio.getPORTO_TYPE(_tie_Portofolio.java:143)
    at portofolio._PortofolioImplBase._execute(_PortofolioImplBase.java:186)
    at portofolio._PortofolioImplBase._execute(_PortofolioImplBase.java:117)
    at com.visigenic.vbroker.orb.SkeletonDelegateImpl.execute(SkeletonDelegateImpl.java)
    at oracle.aurora.server.GiopProtocolAdapter.doRequest(GiopProtocolAdapter.java)
    at com.visigenic.vbroker.orb.GiopProtocolAdapter.dispatchMessage(GiopProtocolAdapter.java)
    at oracle.aurora.server.ThreadSessionDispatcher.run(ThreadSessionDispatcher.java)
    at oracle.aurora.server.VCIiopConnection.processRequest(VCIiopConnection.java)
    at oracle.aurora.server.GiopServer._service(GiopServer.java)
    at oracle.aurora.server.GiopServer.service(GiopServer.java)
    at oracle.aurora.net.VirtualCircuit.processRequest(VirtualCircuit.java)
    at oracle.aurora.net.Presentation.handleRequest(Presentation.java)
    ## Detail 0 ##
    oracle.jdbc.driver.OracleSQLException: ORA-01861: literal does not match format string
    at oracle.jdbc.kprb.KprbDBAccess.check_error(KprbDBAccess.java)
    at oracle.jdbc.kprb.KprbDBAccess.executeFetch(KprbDBAccess.java)
    at oracle.jdbc.kprb.KprbDBAccess.parseExecuteFetch(KprbDBAccess.java)
    at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java)
    at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java)
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java)
    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java)
    at oracle.jbo.server.OracleSQLBuilderImpl.doEntityDML(OracleSQLBuilderImpl.java:269)
    at oracle.jbo.server.EntityImpl.doDML(EntityImpl.java:3293)
    at oracle.jbo.server.EntityImpl.postChanges(EntityImpl.java:2588)
    at oracle.jbo.server.DBTransactionImpl.postChanges(DBTransactionImpl.java:1628)
    at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:997)
    at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:1151)
    at oracle.jbo.server.ejb.cmp.CMPTransactionImpl.beforeCompletion(CMPTransactionImpl.java:74)
    at oracle.aurora.transaction.OracleTransaction.localBeforeCompletion(OracleTransaction.java)
    at oracle.aurora.transaction.O
    racleTransactionManager.localBeforeCompletion(OracleTransactionManager.java)
    at oracle.aurora.transaction.OracleTransactionManager.rollback(OracleTransactionManager.java)
    at oracle.aurora.transaction.OracleTransactionManager.rollback(OracleTransactionManager.java)
    at oracle.aurora.ejb.server.AuroraEnterpriseBean.__txn_rollback(AuroraEnterpriseBean.java)
    at oracle.aurora.ejb.gen._test_omeed_Portofolio.EjbObject_Portofolio.getPORTO_TYPE(oracle/aurora/ejb/gen/_test_omeed_Portofolio/EjbObject_Portofolio:228)
    at portofolio._tie_Portofolio.getPORTO_TYPE(_tie_Portofolio.java:143)
    at portofolio._PortofolioImplBase._execute(_PortofolioImplBase.java:186)
    at portofolio._PortofolioImplBase._execute(_PortofolioImplBase.java:117)
    at com.visigenic.vbroker.orb.SkeletonDelegateImpl.execute(SkeletonDelegateImpl.java)
    at oracle.aurora.server.GiopProtocolAdapter.doRequest(GiopProtocolAdapter.java)
    at com.visigenic.vbroker.orb.GiopProtocolAdapter.dispatchMessage(GiopProtocolAdapter.java)
    at oracle.aurora.server.ThreadSessionDispatcher.run(ThreadSessionDispatcher.java)
    at oracle.aurora.server.VCIiopConnection.processRequest(VCIiopConnection.java)
    at oracle.aurora.server.GiopServer._service(GiopServer.java)
    at oracle.aurora.server.GiopServer.service(GiopServer.java)
    at oracle.aurora.net.VirtualCircuit.processRequest(VirtualCircuit.java)
    at oracle.aurora.net.Presentation.handleRequest(Presentation.java)
    oracle.aurora.ejb.RemoteRuntimeException: Caught RuntimeException in remote method; nested exception is:
    oracle.jbo.DMLException:JBO-26041: Failed to post data to database during "Update": SQL Statement " UPDATE PORTOFOLIO Portofolio123 SET VALUE=:1,PORTO_TYPE=:2,REAL_IND=:3,PORTO_NAME=:4,VALUED_ON=:5 WHERE PORTO_NAME=:6".
    Remote Stack Trace:
    oracle.jbo.DMLException: JBO-26041: Failed to post data to database during "Update": SQL Statement " UPDATE PORTOFOLIO Portofolio123 SET VALUE=:1,PORTO_TYPE=:2,REAL_IND=:3,PORTO_NAME=:4,VALUED_ON=:5 WHERE PORTO_NAME=:6".
    at oracle.jbo.server.OracleSQLBuilderImpl.doEntityDML(OracleSQLBuilderImpl.java:348)
    at oracle.jbo.server.EntityImpl.doDML(EntityImpl.java:3293)
    at oracle.jbo.server.EntityImpl.postChanges(EntityImpl.java:2588)
    at oracle.jbo.server.DBTransactionImpl.postChanges(DBTransactionImpl.java:1628)
    at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:997)
    at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:1151)
    at oracle.jbo.server.ejb.cmp.CMPTransactionImpl.beforeCompletion(CMPTransactionImpl.java:74)
    at oracle.aurora.transaction.OracleTransaction.localBeforeCompletion(OracleTransaction.java)
    at oracle.aurora.transaction.OracleTransactionManager.localBeforeCompletion(OracleTransactionManager.java)
    at oracle.aurora.transaction.OracleTransactionManager.rollback(OracleTransactionManager.java)
    at oracle.aurora.transaction.OracleTransactionManager.rollback(OracleTransactionManager.java)
    at oracle.aurora.ejb.server.AuroraEnterpriseBean.__txn_rollback(AuroraEnterpriseBean.java)
    at oracle.aurora.ejb.gen._test_omeed_Portofolio.EjbObject_Portofolio.getPORTO_TYPE(oracle/aurora/ejb/gen/_test_omeed_Portofolio/EjbObject_Portofolio:228)
    at portofolio._tie_Portofolio.getPORTO_TYPE(_tie_Portofolio.java:143)
    at portofolio._PortofolioImplBase._execute(_PortofolioImplBase.java:186)
    at portofolio._PortofolioImplBase._execute(_PortofolioImplBase.java:117)
    at com.visigenic.vbroker.orb.SkeletonDelegateImpl.execute(SkeletonDelegateImpl.java)
    at oracle.aurora.server.GiopProtocolAdapter.doRequest(GiopProtocolAdapter.java)
    at com.visigenic.vbroker.orb.GiopProtocolAdapter.dispatchMessage(GiopProtocolAdapter.java)
    at oracle.aurora.server.ThreadSessionDispatcher.run(ThreadSessionDispatcher.java)
    at oracle.aurora.server.VCIiopConnection.processRequest(VCIiopConnection.java)
    at oracle.aurora.server.GiopServer._service(GiopServer.java)
    at oracle.aurora.server.GiopServer.service(GiopServer.java)
    at oracle.aurora.net.VirtualCircuit.processRequest(VirtualCircuit.java)
    at oracle.aurora.net.Presentation.handleRequest(Presentation.java)
    ## Detail 0 ##
    oracle.jdbc.driver.OracleSQLException: ORA-01861: literal does not match format string
    at oracle.jdbc.kprb.KprbDBAccess.check_error(KprbDBAccess.java)
    at oracle.jdbc.kprb.KprbDBAccess.executeFetch(KprbDBAccess.java)
    at oracle.jdbc.kprb.KprbDBAccess.parseExecuteFetch(KprbDBAccess.java)
    at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java)
    at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java)
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java)
    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java)
    at oracle.jbo.server.OracleSQLBuilderImpl.doEntityDML(OracleSQLBuilderImpl.java:269)
    at oracle.jbo.server.EntityImpl.doDML(EntityImpl.java:3293)
    at oracle.jbo.server.EntityImpl.postChanges(EntityImpl.java:2588)
    at oracle.jbo.server.DBTransactionImpl.postChanges(DBTransactionImpl.java:1628)
    at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:997)
    at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:1151)
    at oracle.jbo.server.ejb.cmp.CMPTransactionImpl.beforeCompletion(CMPTransactionImpl.java:74)
    at oracle.aurora.transaction.OracleTransaction.localBeforeCompletion(OracleTransac
    tion.java)
    at oracle.aurora.transaction.OracleTransactionManager.localBeforeCompletion(OracleTransactionManager.java)
    at oracle.aurora.transaction.OracleTransactionManager.rollback(OracleTransactionManager.java)
    at oracle.aurora.transaction.OracleTransactionManager.rollback(OracleTransactionManager.java)
    at oracle.aurora.ejb.server.AuroraEnterpriseBean.__txn_rollback(AuroraEnterpriseBean.java)
    at oracle.aurora.ejb.gen._test_omeed_Portofolio.EjbObject_Portofolio.getPORTO_TYPE(oracle/aurora/ejb/gen/_test_omeed_Portofolio/EjbObject_Portofolio:228)
    at portofolio._tie_Portofolio.getPORTO_TYPE(_tie_Portofolio.java:143)
    at portofolio._PortofolioImplBase._execute(_PortofolioImplBase.java:186)
    at portofolio._PortofolioImplBase._execute(_PortofolioImplBase.java:117)
    at com.visigenic.vbroker.orb.SkeletonDelegateImpl.execute(SkeletonDelegateImpl.java)
    at oracle.aurora.server.GiopProtocolAdapter.doRequest(GiopProtocolAdapter.java)
    at com.visigenic.vbroker.orb.GiopProtocolAdapter.dispatchMessage(GiopProtocolAdapter.java)
    at oracle.aurora.server.ThreadSessionDispatcher.run(ThreadSessionDispatcher.java)
    at oracle.aurora.server.VCIiopConnection.processRequest(VCIiopConnection.java)
    at oracle.aurora.server.GiopServer._service(GiopServer.java)
    at oracle.aurora.server.GiopServer.service(GiopServer.java)
    at oracle.aurora.net.VirtualCircuit.processRequest(VirtualCircuit.java)
    at oracle.aurora.net.Presentation.handleRequest(Presentation.java)
    java.lang.String portofolio._st_Portofolio.getPORTO_TYPE()
    void portoclient.PortoClient.main(java.lang.String[])
    null

    Hi,
    How did you map the CMP-fields? I got the same Exceptions when I mapped a column which is DATE type to java.lang.String. DATE type column should be mapped to java.sql.Date.

  • Trouble saving date in CMP EJB on OC4J

    I have a CMP EJB that I'm trying to update and there is a field that maps to date type in the table.
    I get the following error when I try to assign a string literal of the type YYYY-MM-DD:
    javax.ejb.EJBException: Error saving state: ORA-01861: literal does not match format string
    How do you know what format string the container is using/expecting to pass to the database???
    How can you specify that? The EJB itself has the field as a String, not a Date. Should it be a Date?
    The OC4J container created it that way to begin with.
    I'm using JDeveloper with embedded OC4J and the database is 8i.

    Yes, the CMP-field's Java type should be Date. On the database side, the column-type is DATE.

  • Weblogic Deployment Descriptor for CMP EJB

    Hi all,
    Am new to EJB, CMP. Pls help me how to write deployment descriptors for the CMP EJB for Weblogic.
    Give me the list of the Deployment descriptors needed and also pls give me some samples
    thanks in advance
    rgds
    Ravi Bharathi

    The easiest way is to go through some tutorial or refer the code samples. If you have installed weblogic, there are examples provided in the weblogic installation folder itself for each type of bean. Basically for cmp you have to provide the table names and mapping between the class variables to db fields in weblogic_cmp_rdbms.xml deployment descriptor.

  • Running CMP EJB in remote OC4J fails, works in embedded. Oracle 9i

    I more or less followed the EJB Tutorial (in the help) for creating a session-entity bean facade from Oracle 9i tables. Everything executes correctly in the embedded oc4j but it fails on the remote oc4j with
    java.sql.SQLException: Invalid column name
         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:187)
         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:229)
         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:292)
         at oracle.jdbc.driver.OracleStatement.get_column_index(OracleStatement.java:5632)
         at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:716)
         at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1506)
         at com.evermind.sql.FilterResultSet.getString(FilterResultSet.java:585)
         at EmployeeLocalHome_EntityHomeWrapper13.findAll(EmployeeLocalHome_EntityHomeWrapper13.java:1260)
    Then I also created another simpler CMP EJB that just has 3 fields from Oracle table. This one doesn't even work in embedded oc4j :
    com.evermind.server.rmi.OrionRemoteException: Database error: ORA-01747: invalid user.table.column, table.column, or column specification
         java.util.Collection TimesheetHoursHome_EntityHomeWrapper11.findAll()
    Are there any known problems I should look out for with generating CMP EJBS with wizards?
    I think the IDE is more intuitive than WSAD. It would be great it things worked though.
    Another question is regarding relationships. Do the wizards always use ejb-refs to implement relationships? It should be easy enough to add them with EJB Editor if they do not.
    Thanks for any help.

    Known issues are documented in the release notes
    http://otn.oracle.com/products/jdev/htdocs/readme_903Preview.html#ejb
    <<<Another question is regarding relationships. Do the wizards always use ejb-refs to implement relationships? >>>>
    Not sure what you meant here. If you reverse engineer let us say DEPT and EMP tables, foreign key relationships between the tables are reverse engineered as CMR but there aren't any ejb-ref/ejb-local-ref tags which get generated in the deployment descriptor.
    <<It should be easy enough to add them with EJB Editor if they do not. >>
    You can double-click on the EJB to bring the EJB Module Editor and select "Relationships" node to add/edit/delete relationships visually.
    raghu
    JDev Team

  • Question: How to use XMLType in a CMP EJB???

    Hello, Together,
    I have a big problem using XMLType in a CMP EJB. I don't know, if somebody knows about it:
    I am trying to write a CMP EJB, which should be deployed under JBoss later. The problem here is, which java data type should I use to map a column of XMLType. I have tried to use it as a java.lang.Object, and also as a java.lang.String, it did not work properly.
    Can someone help me? Thanks a lot!

    Just pass the in the JSP/Servlet involved ServletContext through as a method or constructor parameter of that Java class.
    Semi-pseudo:protected doPost(req, res) {
        ServletContext servletContext = getServletContext();
        SomeJavaClass someJavaClass = new SomeJavaClass(servletContext);
        // or
        someJavaClass.doSomething(servletContext);
    }

  • CMP EJB created base on Synonyms

    Hello,
    When created CMP EJBs based on Synonyms, entity to entity relationship (use -DassociateUsingThirdTable=true) works fine in JDeveloper embedded OC4J (10g release 1). If deploy to Oracle Application Server (10g release 2) got run time error:
    05/05/24 15:12:49 Error in bean User: Database Error
    java.sql.SQLException: ORA-00918: column ambiguously defined
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:137)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:304)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:271)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:625)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:181)
    at oracle.jdbc.driver.T4CPreparedStatement.execute_for_describe(T4CPreparedStatement.java:661)
    at oracle.jdbc.driver.OracleStatement.execute_maybe_describe(OracleStatement.java:959)
    at oracle.jdbc.driver.T4CPreparedStatement.execute_maybe_describe(T4CPreparedStatement.java:693)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1065)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2901)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:2942)
    at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].sql.FilterPreparedStatement.executeQuery(FilterPreparedStatement.java:270)
    at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].sql.FilterPreparedStatement.executeQuery(FilterPreparedStatement.java:270)
    at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].sql.FilterPreparedStatement.executeQuery(FilterPreparedStatement.java:270)
    at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].sql.PreparedStatementBCELProxy.executeQuery(PreparedStatementBCELProxy.java:31)
    at UserLocal_UserRoleLocal_ORCollection638.getObjects(UserLocal_UserRoleLocal_ORCollection638.java:74)
    at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)].server.ejb.ORCollection.iterator(ORCollection.java:99)
    UserLocal_UserRoleLocal_ORCollection638.getObjectsUserLocal_UserRoleLocal_ORCollection638.getObjects(UserLocal_UserRoleLocal_ORCollection638.java:74)
    This is Application Server generated file. I have found two work around: one is create physical tables for the synonym tables, second is using ejbSelect method (EJB QL). But I still want to know if anybody has encountered this type of problem and any solution besides above memtioned work around.
    [email protected]
    Thanks,
    Eileen Young

    The issues are resolved now.
    1. This classpath entry problem was a bit mystifying. The manifest entry was
    correct and it should have picked it up automatically. When i restarted the
    server though, it started up properly.
    2. The CMP problem was a bit more troublesome. I think it was because of an
    incorrect datasource and connection pool properties. I used utils.Schema to
    check my database connection and once i got the url and driver name
    correctly it worked.
    TAR,
    Pavan

  • CMP EJB in 1.1/1.2..., mapping problems

    Hello,
    I'm a little bit confused by all these different EJB specifications and products...
    I want to use CMP EJB, because as far as I understand this topic, the container should do a lot of work for me (transaction management, connection pooling) and all tutorials tell me to prefer CMP ;-)
    Now I've got a Java class (to became my CMP EJB) like this:
    class doc {
    Descriptor descr;
    String body;
    and another class:
    class descriptor {
    int id;
    String title;
    My database contains two tables for both classes:
    table descr:
    id int (primary key);
    title varchar;
    table doc:
    fk_descr int; // foreign key to descr
    body varchar;
    Is it possible to make a CMP EJB using these two tables and using a Descriptor object? Which versions of EJB can handle this? Do you have any expirience with that?
    All examples I've read are always using only one table and classes containing only basic types like int, String.
    Thank you,
    Jens

    What you've described is a 1-1 relationship between two classes, which is not supported by CMP until EJB 2.0.
    -Peris

  • BLOB & CMP EJB - Cannot bind stream to a ScrollableResultSet

    Hi,
    I am trying to bind a byte[] to a Blob column in CMP EJB using Oracle 10g OCI driver in WebSphere. This gives the below error.
    java.sql.SQLException: Cannot bind stream to a ScrollableResultSet or UpdatableResultSetDSRA0010E: SQL State = null, Error Code = 17,169
         at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapException(LocalExceptionMappingStrategy.java:195)
         at com.ibm.ejs.container.LocalExceptionMappingStrategy.setUncheckedException(LocalExceptionMappingStrategy.java:266)
         at com.ibm.ejs.container.EJSDeployedSupport.setUncheckedLocalException(EJSDeployedSupport.java:318)
    Thanks

    When you create a DataSource, use the below class in the field 'Data Source helper classs name'. This should solve the issue.
    import java.util.Properties;
    import javax.resource.ResourceException;
    import com.ibm.websphere.appprofile.accessintent.AccessIntent;
    public class OracleDataStoreHelper extends com.ibm.websphere.rsadapter.OracleDataStoreHelper {
         public OracleDataStoreHelper(Properties props) {
              super(props);
         public int getResultSetConcurrency(AccessIntent intent)     throws ResourceException {
              return java.sql.ResultSet.CONCUR_READ_ONLY;
    }

Maybe you are looking for

  • Can a HP B210 AIO printer be connected to 2 different wireless networks at the same time?

    I live in a household that has 2 different wireless networks in it (both me and my roommate have our own networks) and we just bought a new B210 series AIO printer.  The printer detects both of our networks but only will print from one network at a t

  • My iMac doesn't recognize the hard drive

    Hi all.  I have a question.  I have a iMac G5 20" 2Ghz and I'm trying to instal a replacement hard drive.    It's a WD 320GB HD with wite and blue stiker (It's a WD Caviar Blue).  I'm trying to instal MAC OSX 10.5 it a retail full version DVD and whe

  • Vendor expencess report

    Hi, One of our client requested to prepare report on each vendor wise how much amount spent on cost center and gl account wise. Ex: Take "RE"document as an example, from here we should select RE document ... through GR/IR line item we can go through

  • Copying and pasting photos into txt messaging

    Good morning everyone. I just recently installed the new 3.0 software for my iphone and i love all the features espcially the copy n pasting. but i cant for my life copy n paste a photo in to my txt messages. can u please explain to me how i can do t

  • BEx Broadcasting Error

    Hi, We are having trouble executing BEx broadcasting on our portal.  We are using NW04s SPS11.  The problem we are having is with the out-of-the-box iView for the BEx broadcaster.  After we select a workbook to broadcast and enter the required settin