cancel
Showing results for 
Search instead for 
Did you mean: 

Problem in creating CMP Entity Bean - Pls Help

Former Member
0 Kudos

I am trying to build one simple project having jsps to get connected to CMP Entity Bean.

But while deploying I am getting the following error...

Nov 15, 2004 10:59:09... Info: End of log messages of the target system.

Nov 15, 2004 10:59:09... Info: ***** End of SAP J2EE Engine Deployment (J2EE Application) *****

Nov 15, 2004 10:59:09... Error: Execution of deployment action for "EntityCMPAppln" aborted:

Caught exception during application deployment from SAP J2EE Engine's deploy service:

java.rmi.RemoteException: Error occurred while starting application bcone.com/EntityCMPAppln and wait.

Reason: Complex error : server ID 6155350:Application bcone.com/EntityCMPAppln cannot be started, because it has hard reference to resource CONFIG_DB with type javax.sql.DataSource, but it is not active on the server.

(message ID: com.sap.sdm.serverext.servertype.inqmy.extern.EngineApplOnlineDeployerImpl.performAction(DeploymentActionTypes).REMEXC)

Nov 15, 2004 10:59:09... Error: Deployment NOT successful for EntityCMPAppln

Nov 15, 2004 10:59:09... Info: SDM configuration: Do not automatically start/stop J2EE Engine. Do not restore state of J2EE Engine now.

Nov 15, 2004 10:59:09... Error: -


At least one of the Deployments failed -


Nov 15, 2004 11:05:16... Info: Request for Logon as admin accepted

===========================================

Nov 15, 2004 11:05:08... Info: = Starting to execute command 'remotegui' =

Nov 15, 2004 11:05:08... Info: ===============================================

Nov 15, 2004 11:05:10... Info: SDM started successfully.

Please tell me how to activate the CONFIG_DB reference in database. Or what Extra I have to do to run this example.

Regards,

Vivek Ojha

Accepted Solutions (0)

Answers (3)

Answers (3)

katarzyna_fecht
Explorer
0 Kudos

Hi Vivek Ojka,

please adjust the <data-source-name> element in the persistent.xml:

<data-source-name>STUDENTDB</data-source-name>

according to Your <alias> entry in the data source alias definition.

In the case of further questions, please firstly refer to the Development Manual, guiding you in detail through the whole EJB development process:

http://help.sap.com/saphelp_erp2004/helpdata/en/49/b21d2b6d8b2649bfa1516f4af69371/frameset.htm

Former Member
0 Kudos

Dear Benny,

The code of the required files is pasted below....

Application.XML

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN"

"http://java.sun.com/dtd/application_1_3.dtd">

<application>

<display-name>EntityCMPAppln</display-name>

<description>EAR description</description>

<module>

<ejb>EntityCMPEjb.jar</ejb>

</module>

<module>

<web>

<web-uri>EntityCMPWeb.war</web-uri>

<context-root>/student</context-root>

</web>

</module>

</application>

Application-j2ee-engine.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE application-j2ee-engine SYSTEM "application-j2ee-engine.dtd">

<application-j2ee-engine>

<provider-name>bcone.com</provider-name>

<fail-over-enable

mode="disable"/>

</application-j2ee-engine>

data-source-aliases.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE data-source-aliases SYSTEM "data-source-aliases.dtd">

<data-source-aliases>

<aliases>

<data-source-name>${com.sap.datasource.default}</data-source-name>

<alias>STUDENTDB</alias>

</aliases>

</data-source-aliases>

ejb-j2ee-engine.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ejb-j2ee-engine SYSTEM "ejb-j2ee-engine.dtd">

<ejb-j2ee-engine>

<enterprise-beans>

<enterprise-bean>

<ejb-name>StudentBean</ejb-name>

<resource-ref>

<res-ref-name>jdbc/STUDENTDB</res-ref-name>

<res-link>STUDENTDB</res-link>

</resource-ref>

<entity-props/>

</enterprise-bean>

</enterprise-beans>

</ejb-j2ee-engine>

ejb-jar.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar>

<description>EJB JAR description</description>

<display-name>EJB JAR</display-name>

<enterprise-beans>

<entity>

<ejb-name>StudentBean</ejb-name>

<home>com.bcone.ejb.StudentHome</home>

<remote>com.bcone.ejb.Student</remote>

<ejb-class>com.bcone.ejb.StudentBean</ejb-class>

<persistence-type>Container</persistence-type>

<prim-key-class>java.lang.String</prim-key-class>

<reentrant>False</reentrant>

<cmp-version>2.x</cmp-version>

<abstract-schema-name>StudentBean</abstract-schema-name>

<cmp-field>

<field-name>studentId</field-name>

</cmp-field>

<cmp-field>

<field-name>lname</field-name>

</cmp-field>

<cmp-field>

<field-name>standard</field-name>

</cmp-field>

<cmp-field>

<field-name>fyear</field-name>

</cmp-field>

<cmp-field>

<field-name>fname</field-name>

</cmp-field>

<primkey-field>studentId</primkey-field>

<resource-ref>

<res-ref-name>jdbc/STUDENTDB</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

</entity>

</enterprise-beans>

</ejb-jar>

persistent.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE persistent-ejb-map SYSTEM "persistent.dtd">

<persistent-ejb-map>

<locking

type="Table"/>

<db-properties>

<data-source-name>CONFIG_DB</data-source-name>

<database-vendor

name="SAPDB"/>

</db-properties>

<entity-beans>

<entity-bean>

<ejb-name>StudentBean</ejb-name>

<table-name>TMP_STUDENTNEW</table-name>

<field-map

key-type="PrimaryKey">

<field-name>studentId</field-name>

<column>

<column-name>STUDENTID</column-name>

</column>

</field-map>

<field-map

key-type="NoKey">

<field-name>lname</field-name>

<column>

<column-name>LNAME</column-name>

</column>

</field-map>

<field-map

key-type="NoKey">

<field-name>standard</field-name>

<column>

<column-name>STANDARD</column-name>

</column>

</field-map>

<field-map

key-type="NoKey">

<field-name>fyear</field-name>

<column>

<column-name>FYEAR</column-name>

</column>

</field-map>

<field-map

key-type="NoKey">

<field-name>fname</field-name>

<column>

<column-name>FNAME</column-name>

</column>

</field-map>

</entity-bean>

</entity-beans>

<relationships/>

</persistent-ejb-map>

StudentBean.java

package com.bcone.ejb;

import javax.ejb.EntityBean;

import javax.ejb.EntityContext;

import javax.ejb.RemoveException;

import javax.ejb.CreateException;

/**

  • @abstractSchemaName StudentBean

  • @cmpVersion 2.x

  • @ejbHome <{com.bcone.ejb.StudentHome}>

  • @ejbPrimaryKey <{java.lang.String}>

  • @ejbRemote <{com.bcone.ejb.Student}>

  • @hasSimplePK true

*/

public abstract class StudentBean implements EntityBean {

public void ejbLoad() {

}

public void ejbStore() {

}

public void ejbRemove() throws RemoveException {

}

public void ejbActivate() {

}

public void ejbPassivate() {

}

public void setEntityContext(EntityContext context) {

myContext = context;

}

public void unsetEntityContext() {

myContext = null;

}

private EntityContext myContext;

/**

  • @primKeyField

*/

public abstract String getStudentId();

public abstract void setStudentId(String studentId);

public abstract String getLname();

public abstract void setLname(String lname);

public abstract String getFname();

public abstract void setFname(String fname);

public abstract String getStandard();

public abstract void setStandard(String standard);

public abstract String getFyear();

public abstract void setFyear(String fyear);

/**

  • Create Method.

*/

public String ejbCreate(

String studentId,

String fname,

String lname,

String standard,

String fyear)

throws CreateException {

setStudentId(studentId);

setFname(fname);

setLname(lname);

setStandard(standard);

setFyear(fyear);

return null;

}

/**

  • Post Create Method.

*/

public void ejbPostCreate(

String studentId,

String fname,

String lname,

String standard,

String fyear) {

// TODO : Implement

}

}

StudentData.java

/*

  • Created on Nov 14, 2004

*

  • To change the template for this generated file go to

  • Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments

*/

package com.bcone.data;

/**

  • @author Administrator

*

  • To change the template for this generated type comment go to

  • Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments

*/

public class StudentData {

private String studentId;

private String fname;

private String lname;

private String standard;

private String fyear;

/**

  • @return

*/

public String getFname() {

return fname;

}

/**

  • @return

*/

public String getFyear() {

return fyear;

}

/**

  • @return

*/

public String getLname() {

return lname;

}

/**

  • @return

*/

public String getStandard() {

return standard;

}

/**

  • @return

*/

public String getStudentId() {

return studentId;

}

/**

  • @param string

*/

public void setFname(String string) {

fname = string;

}

/**

  • @param string

*/

public void setFyear(String string) {

fyear = string;

}

/**

  • @param string

*/

public void setLname(String string) {

lname = string;

}

/**

  • @param string

*/

public void setStandard(String string) {

standard = string;

}

/**

  • @param string

*/

public void setStudentId(String string) {

studentId = string;

}

}

student.jsp

<%@ page language="java" %>

<html>

<head>

<title>

Title

</title>

</head>

<body>

<form method="POST" action="WEBBOT-SELF" name="Student" onSubmit="">

<!--webbot bot="SaveResults" startspan U-File="_private/form_results.txt"

S-Format="TEXT/CSV" S-Label-Fields="TRUE" ><input TYPE="hidden" NAME="VTI-GROUP" VALUE="0"><!webbot

bot="SaveResults" endspan -->

<br>

<a href="/student/manageStudent.jsp?action=add" method="post"> Create </a>&nbsp;&nbsp;&nbsp;

<a href="/student/manageStudent.jsp?action=modify" method="post"> Modify </a>&nbsp;&nbsp;&nbsp;

<a href="/student/manageStudent.jsp?action=delete" method="post"> Delete </a>

<br><br>

<table border="1" width="32%">

<tr>

<td width="39%">Student ID </td>

<td width="61%"><input type="text" name="studentId" size="20"></td>

</tr>

<tr>

<td width="39%">First Name</td>

<td width="61%"><input type="text" name="fname" size="20"></td>

</tr>

<tr>

<td width="39%">Last Name</td>

<td width="61%"><input type="text" name="lname" size="20"></td>

</tr>

<tr>

<td width="39%">Standard</td>

<td width="61%"><input type="text" name="standard" size="20"></td>

</tr>

<tr>

<td width="39%">Fiscal Year</td>

<td width="61%"><input type="text" name="fyear" size="20"></td>

</tr>

<tr>

<td width="39%" align="center"><input type="submit" value="Submit" name="submit"></td>

<td width="61%" align="center"><input type="reset" value="Reset" name="reset"></td>

</tr>

</table>

</form>

</body>

</html>

mamageStudent.jsp

<%@ page language="java"

import="javax.naming.,java.sql.,javax.sql,com.bcone.ejb."

%>

<html>

<head>

<title>

Manage Student

</title>

</head>

<body>

<h1>

</h1>

<jsp:useBean id="stu" class="com.bcone.data.StudentData" ></jsp:useBean>

<jsp:setProperty name="stu" property="*" />

<%

try {

InitialContext ctx = new InitialContext();

StudentHome home = (StudentHome) ctx.lookup("java:comp/env/StudentBean");

String str = request.getParameter("action");

if("action".equals(str)) {

Student rem = home.create(remote.setFname(stu.getStudentId(),stu.getFname(),stu.getLname(),stu.getStandard(),stu.getFyear());

out.println(stu.getStudentId() + "Student Created");

} else if ("modify".equals(str)) {

Student remote = home.findByPrimaryKey(stu.getStudentId());

remote.setFname(stu.getFname());

remote.setFname(stu.getLname());

remote.setFname(stu.getStandard());

remote.setFname(stu.getFyear());

out.println(stu.getStudentId() + "Student modified");

} else if ("delete".equals(str)) {

Student stu1 = home.findByPrimaryKey(stu.getStudentId());

stu1.remove();

out.println(stu.getStudentId() + "Student deleted");

}

} catch (Exception e) {

out.println("Exception e"+e.toString());

}

%>

</body>

</html>

Regards,

Vivek Ojha

Benny
Product and Topic Expert
Product and Topic Expert
0 Kudos

In your persistent.xml you are referring to CONFIG_DB, while you already defined alias STUDENTDB for the database to use in your app. Change that to STUDENTDB.

that should be it.

Regards,

Benny

Benny
Product and Topic Expert
Product and Topic Expert
0 Kudos

Did you write the code yourself?

If so, could you show me that?

And maybe the descriptors too.

Regards,

Benny