DTD to set Entity Bean's JNDI Name?
gberish Feb 12, 2005 11:38 PMMy question is what deployment descriptor I use to bind a JNDI name to my Entity Beans.
I am stuck.
My applicartion deployes with no error messages. I have some Servlets included that all work.
AND ... deploying my application even creates all the required database tables correctly.
However, when I pass a Game object to a Servlets doPost () where I want the Servlet to create the GameBean, I cannot find my Bean Objects.
And when I look in the JNDI list in the console they are not there.
If anyone is willing to help, here are the sections of the code I think are relevant for one Bean:
<ejb-jar> <enterprise-beans> <!-- MemberBean --> <entity> <description>MemberBean Definition</description> <display-name>MemberBean</display-name> <small-icon/> <large-icon/> <ejb-name>MemberEJB</ejb-name> <local-home>org.projects.games.go.MemberLocalHome</local-home> <local>org.projects.games.go.MemberLocal</local> <ejb-class>org.projects.games.go.MemberBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>java.lang.Integer</prim-key-class> <reentrant>False</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>MemberSchema</abstract-schema-name> <cmp-field><field-name>id</field-name></cmp-field> .... other fields <primkey-field>id</primkey-field> <resource-ref> <description/> <res-ref-name>DefaultDS</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref> </entity> ... </enterprise-beans> </ejb-jar>
<jbosscmp-jdbc> <enterprise-beans> <!-- MemberBean --> <entity> <ejb-name>MemberEJB</ejb-name> <create-table>true</create-table> <table-name>plays</table-name> <cmp-field> <field-name>id</field-name> <column-name>id</column-name> <not-null/><auto-increment/> </cmp-field> .... other fields <entity-command name="mysql-get-generated-keys" class="org.jboss.ejb.plugins.cmp.jdbc.keygen.JDBCMySQLCreateCommand"/> </entity> ... </enterprise-beans> </jbosscmp-jdbc>
<jboss> <enterprise-beans> <!-- MemberBean --> <entity> <ejb-name>MemberEJB</ejb-name> <local-jndi-name>ejb/MemberLocalHome</local-jndi-name> <resource-ref> <res-ref-name>DefaultDS</res-ref-name> <jndi-name>java:/DefaultDS</jndi-name> </resource-ref> </entity> ... <enterprise-beans> </jboss>
The Local Client Method
void saveCurrentGame() {
System.out.println ("Saving Game");
String urlString;
URL url;
URLConnection urlConnection;
HttpURLConnection httpConnection;
ObjectOutputStream out;
InputStream in;
// Local vs. Remote Server
urlString = "http://localhost:8080/X/servlet/SaveGameServlet";
System.out.println ("URL: " + urlString);
try {
// Configure connection
url = new URL (urlString);
urlConnection = url.openConnection ();
System.out.println("Connection Opened.");
httpConnection = (HttpURLConnection) urlConnection;
httpConnection.setRequestMethod ("POST");
httpConnection.setDoOutput(true);
httpConnection.setDoInput(true);
System.out.println("Connection Configured");
// POST Game
out = new ObjectOutputStream(httpConnection.getOutputStream ());
System.out.println("OutputStream Instantiated");
out.writeObject(model.getGame ());
out.flush();
out.close ();
System.out.println("New Game object POSTed");
// Get response
in = (InputStream) httpConnection.getContent ();
System.out.println("POST returned");
System.out.println("*****Begining printContent()*****");
BufferedReader reader =
new BufferedReader (
new InputStreamReader (in) );
while (true) {
int i = in.read ();
if (i <0) break;
System.out.print ((char) i);
}
in.close ();
System.out.println("*****End printContent()*****\n");
} catch (MalformedURLException me) {
System.out.println("Malformed URL Exception");
} catch (ProtocolException pe) {
System.out.println("Protocal Exception");
} catch (IOException io) {
System.out.println("IO Exception");
}
}The Servlet doPost ()
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Beginning doPost() in UploadGameServlet");
ObjectInputStream in =
new ObjectInputStream( request.getInputStream () );
out.println("Got ObjectInputStream from request");
Game game = null;
try {
game = (Game) in.readObject();
out.println("Game Object Instantiated");
} catch (ClassNotFoundException cnf) {
out.println("Class Not Found Exception");
} catch (Exception e) {
out.println("Other Exception");
}
in.close ();
Object ref = null;
GameLocalHome home = null;
GameLocal gameBean = null;
try {
Context jndiContext = new InitialContext();
out.println("getInitialContext() returned: "+jndiContext);
// THIS IS WERE IT BRANCHES TO NAMINGEXCEPTION BELOW
ref = jndiContext.lookup("ejb/GameLocalHome");
out.println("Got jndiContext for GameBean");
home = (GameLocalHome) ref;
out.println("Cast ref to home X");
gameBean = home.create(game);
out.println("GameBean created");
} catch (CreateException ce) {
out.println("Create Exception ");
} catch (NamingException ne) {
out.println("Naming Exception");
}
out.println("BYE");
}