自动注册JNDI资源

问题描述:

我想知道是否可以通过部署一个战争文件完全注册一个MySQL数据库连接池的JNDI资源。这可能吗?自动注册JNDI资源

还有没有其他的方式来使用JNDI文件,而无需管理员控制台。我有一个任务,我必须使用JSTL访问数据库,并且我们必须将其部署到*glassfish 3服务器上,我们无法访问管理控制台。这可能吗?

+0

什么样的资源你想通过JNDI查找?从Java EE 6开始,EJB组件具有可移植的JNDI名称,因此不需要配置。 – jFrenetic

+0

我想创建一个使用JNDI的mysql数据库连接 – LudgerP

是的,有一种方法可以在不与管理控制台交互的情况下配置资源,但这将是服务器特定的。例如,对于glassfish,您必须创建一个glassfish-resources.xml文件并将其置于WEB-INF之下。下面是样本内容:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd"> 

<resources> 
<jdbc-connection-pool 
name="jdbc/test_pool" 
res-type="javax.sql.DataSource" 
datasource-classname="org.apache.derby.jdbc.ClientDataSource" 
pool-resize-quantity="1" 
max-pool-size="5" 
steady-pool-size="0" 
statement-timeout-in-seconds="30" > 
    <property name="PortNumber" value="1527"></property> 
     <property name="Password" value="APP"></property> 
     <property name="User" value="APP"></property> 
     <property name="serverName" value="localhost"></property> 
     <property name="DatabaseName" value="testConnection"></property> 
     <property name="connectionAttributes" value=";create=true"></property> 
</jdbc-connection-pool> 
<jdbc-resource pool-name="jdbc/test_pool" jndi-name="jdbc/test"></jdbc-resource> 
</resources> 

注意的是,所创建的资源将是应用程序范围。这意味着,你将不得不使用java:app前缀通过JNDI名称找到它,像这样:

@Named 
@SessionScoped 
public class TestConnectionBean implements Serializable { 

    @Resource(name = "java:app/jdbc/test") 
    private javax.sql.DataSource dataSource; 

    public void test() throws SQLException { 
     Connection conn = null; 
     try { 
      conn = dataSource.getConnection(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
     DatabaseMetaData metaData = conn.getMetaData(); 
     System.out.println(metaData.getDriverName()); 
     System.out.println(metaData.getDatabaseProductName()); 
    } 

} 

如果你需要创建一个全球范围的资源,那么你将不得不使用的一个以下:

  • 管理控制台
  • CLI asadmin实用
  • 编辑domain.xml中手动
+0

谢谢队友非常感谢。 – LudgerP

+0

不客气! – jFrenetic