Hello,
I'm using the Sun System Application Server 8.2 in combination with the jdk 1.6
and xdoclet 1.2.3.
When generating the ejb-jar.xml for my Session-EJB, there are a couple of
issues I've not solved currently to get a working ear file.
1. issue:
The Session-EJB does not register itself in jndi under the specified name.
2. issue:
The resource-ref does not specify the jndi-name as well as userid and passwd.
All this issues can be worked around by editing the ear file with the
deploytool delivered with the server.
Is there a way to create the necessary sun-ejb-jar.xml file, so I don't have to
work around this issues?
Below is the source of my ejb:
package jav18.ejb;
import jav18.utils.Frage;
import java.io.IOException;
import java.rmi.RemoteException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.ejb.EJBException;
import javax.ejb.SessionContext;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
/**
*
* <!-- begin-user-doc --> A generated session bean <!-- end-user-doc --> * <!--
* begin-xdoclet-definition -->
*
* @ejb.bean name="Umfrage" description="Einfache Umfrage als Session-EJB
* (Lehrheft JAV18)" display-name="ejb/UmfrageJNDI"
* local-jndi-name="ejb/UmfrageJNDI" jndi-name="ejb/UmfrageJNDI"
* type="Stateful" transaction-type="Bean"
* @ejb.resource-ref res-ref-name="jdbc/Fragen" res-type="javax.sql.DataSource"
* res-auth="Application" jndi-name="jdbc/Oracle"
* @generated
*/
public class UmfrageBean implements javax.ejb.SessionBean {
/**
*
*/
private int teilnehmer;
private double average;
private int bereich;
private Connection connection;
int frageID;
String frage, queryString;
/**
*
* <!-- begin-xdoclet-definition -->
*
* @ejb.create-method view-type="remote" <!-- end-xdoclet-definition -->
* @generated
*
*/
public void ejbCreate() {
try {
connection = holeOracleConn();
teilnehmer = 0;
average = 0.0;
bereich = 0;
frageID = 0;
frage = null;
queryString = null;
} catch (IOException e) {
System.out.println("Error while creating " + "database connection"
+ e.getMessage());
}
}
/**
*
* <!-- begin-xdoclet-definition -->
*
* @ejb.interface-method view-type="remote" <!-- end-xdoclet-definition
* -->
*
*/
public Frage getFrage(int frageID) {
if (queryString == null)
dbAbfrage(frageID);
return new Frage(frage, bereich, teilnehmer, average);
}
/**
* Setzt die Antwort
*
* @ejb.interface-method view-type="remote"
*/
public void setAntwort(int wert) {
average = (average * teilnehmer + wert) / (teilnehmer + 1);
teilnehmer++;
queryString = "UPDATE Fragen SET average=" + average + ", teilnehmer="
+ teilnehmer + " WHERE frageID=" + frageID;
try {
PreparedStatement stmt = connection.prepareStatement(queryString);
stmt.executeUpdate();
} catch (SQLException e) {
System.out.println("Error while setting data: " + e.getMessage());
}
}
/*
* (non-Javadoc)
*
* @see javax.ejb.SessionBean#ejbActivate()
*/
public void ejbActivate() throws EJBException, RemoteException {
}
/*
* (non-Javadoc)
*
* @see javax.ejb.SessionBean#ejbPassivate()
*/
public void ejbPassivate() throws EJBException, RemoteException {
}
/*
* (non-Javadoc)
*
* @see javax.ejb.SessionBean#ejbRemove()
*/
public void ejbRemove() throws EJBException, RemoteException {
try {
connection.close();
} catch (SQLException e) {
throw new EJBException("Error while closing "
+ "Database connection: " + e.getMessage());
}
}
/*
* (non-Javadoc)
*
* @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)
*/
public void setSessionContext(SessionContext arg0) throws EJBException,
RemoteException {
}
/**
*
*/
public UmfrageBean() {
teilnehmer = 0;
average = 0.0;
bereich = 7;
}
private Connection holeOracleConn() throws IOException {
DataSource ds = null;
try {
InitialContext ctx = new InitialContext();
ds = (DataSource) ctx.lookup("jdbc/Fragen");
} catch (NamingException e) {
throw new IOException("NamingException while "
+ "looking up DBContext: " + e.getMessage());
}
try {
Connection conn = null;
if (ds != null)
conn = ds.getConnection();
return conn;
} catch (SQLException e) {
throw new IOException("SQLException while "
+ "getting DBConnection: " + e.getMessage());
}
}
private void dbAbfrage(int frageID) {
queryString = "SELECT * FROM Fragen where frageID=" + frageID;
try {
PreparedStatement stmt = connection.prepareStatement(queryString);
ResultSet res = stmt.executeQuery();
if (res.next()) {
teilnehmer = res.getInt("teilnehmer");
average = res.getDouble("average");
bereich = res.getInt("bereich");
frageID = res.getInt("frageID");
frage = res.getString("frage");
}
} catch (SQLException e) {
System.out
.println("Error while retrieving data: " + e.getMessage());
}
}
}
With kind regards
Florian Reiser
--
Ist Ihr Browser Vista-kompatibel? Jetzt die neuesten
Browser-Versionen downloaden: http://www.gmx.net/de/go/browser
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
xdoclet-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xdoclet-user