大家好,有个问题纠结的好几天,在网上找了很久也没有答案。
请问怎样用EJB远程连接数据库连接池?
我先配置好glassfish的连接池,JNDI名字是mysqlconn,glassfish安装在一台服务器(ip:128),mysql安装在另一台服务器(ip:94),都在同一个局域网。通过glassfish的配置已经连通了MYSQL。
下面是我的代码,在128上可以运行,但是在我的电脑上就不行。
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;import javax.sql.*;//import javax.activation.DataSource;
//import javax.naming.Context;
import javax.naming.*;
//import javax.naming.NamingException;//import com.sun.messaging.jms.Connectioncpublic class Main {
public static void main(String[] args) throws NamingException, SQLException {
// TODO Auto-generated method stub
Properties props = new Properties(null);
    props.setProperty("java.naming.factory.initial","com.sun.enterprise.naming.SerialInitContextFactory");
    props.setProperty("java.naming.factory.url.pkgs","com.sun.enterprise.naming");
    props.setProperty("java.naming.factory.state","com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");     
    props.setProperty("org.omg.CORBA.ORBInitialHost", "10.68.138.128");          
    props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");     
    
ResultSet rs = null;
Statement stmt = null;
Connection conn = null; System.out.println("1");
InitialContext testsql = new InitialContext(props);

System.out.println("2");
DataSource datasource = (DataSource) testsql.lookup("mysqlconn");
System.out.println("3");
conn = datasource.getConnection();
System.out.println("4");
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery("select * from caseresult1104");
while (rs.next()){
System.out.println(rs.getString("id"));
//System.out.println(rs.getString("test_date"));
//System.out.println(rs.getString("revision"));
}
rs.close();
stmt.close();
conn.close();
} /* (non-Java-doc)
 * @see java.lang.Object#Object()
 */
public Main() {
super();
}}