我想知道是否可以通過部署一個戰爭文件完全註冊一個MySQL數據庫連接池的JNDI資源。這可能嗎?自動註冊JNDI資源
還有沒有其他的方式來使用JNDI文件,而無需管理員控制檯。我有一個任務,我必須使用JSTL訪問數據庫,並且我們必須將其部署到中央glassfish 3服務器上,我們無法訪問管理控制檯。這可能嗎?
我想知道是否可以通過部署一個戰爭文件完全註冊一個MySQL數據庫連接池的JNDI資源。這可能嗎?自動註冊JNDI資源
還有沒有其他的方式來使用JNDI文件,而無需管理員控制檯。我有一個任務,我必須使用JSTL訪問數據庫,並且我們必須將其部署到中央glassfish 3服務器上,我們無法訪問管理控制檯。這可能嗎?
是的,有一種方法可以在不與管理控制檯交互的情況下配置資源,但這將是服務器特定的。例如,對於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());
}
}
如果你需要創建一個全球範圍的資源,那麼你將不得不使用的一個以下:
什麼樣的資源你想通過JNDI查找?從Java EE 6開始,EJB組件具有可移植的JNDI名稱,因此不需要配置。 – jFrenetic
我想創建一個使用JNDI的mysql數據庫連接 – LudgerP