在 IntelliJ 中使用 DataSource、JNDI API
Working with DataSource, JNDI API in IntelliJ
我正在尝试了解如何使用 DataSource Object
和 JNDI API
.
建立数据库连接
我正在使用 Intellij UE 并有一个本地 Tomcat-8
- 和 Postgres-Server
运行.
我按照 Oracle Java 文档中提到的进行操作:
正在创建 DataSource Class
的实例并设置其属性
org.postgresql.ds.PGSimpleDataSource dataSource = new org.postgresql.ds.PGSimpleDataSource();
dataSource.setServerName("localhost");
dataSource.setDatabaseName("db01");
dataSource.setUser("jwi");
dataSource.setPassword("password");
正在向使用 JNDI API
的命名服务注册 DataSource Object
Context ctx = null;
try {
ctx = new InitialContext();
ctx.bind("jdbc/localDB", dataSource);
} catch (NamingException e) {
e.printStackTrace();
}
Oracle 文档说:
With the properties set, the system administrator can register the BasicDataSource object with a JNDI (Java Naming and Directory Interface) naming service.
所以我的第一个问题是:注册 DataSource
意味着什么?我上面的代码是否已经将 DataSource Object
注册为 JNDI
?
使用部署DataSource Object
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("jdbc/localDB");
dbCon = ds.getConnection();
...
在这段代码中,IntelliJ 总是声称它无法解析方法 getConnection()
。
Oracle 文档说:
After a basic DataSource implementation is deployed by a system administrator, it is ready for a programmer to use.
所以我的第二个问题是:在这种情况下部署到底意味着什么?创建一个 DataSource Instance
并使用 JDNI
执行注册?或者部署意味着 Tomcat
context.xml
和 web.xml
配置 (Tomcat 8 JNDI How-To)?
如果有人对这个问题有详细的逐步说明,我将不胜感激,事实上,恕我直言,Oracle 文档在某些方面并不清楚。
对于第二个问题,部署意味着你的数据源是在tomcat中的context.xml中声明的。
这是 oracle 数据库的示例(您必须更改 postgres 的驱动程序):
<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
username="scott" password="tiger" maxTotal="20" maxIdle="10"
maxWaitMillis="-1"/>
之后,您可以编写 java 部分,为此您可以观看此 link http://www.javapractices.com/topic/TopicAction.do?Id=127
有关完整示例,这里有一个很好的教程 http://alvinalexander.com/blog/post/java/how-configure-tomcat-dbcp-connection-pool-pooling-postgres。
希望对您有所帮助
我正在尝试了解如何使用 DataSource Object
和 JNDI API
.
我正在使用 Intellij UE 并有一个本地 Tomcat-8
- 和 Postgres-Server
运行.
我按照 Oracle Java 文档中提到的进行操作:
正在创建
DataSource Class
的实例并设置其属性org.postgresql.ds.PGSimpleDataSource dataSource = new org.postgresql.ds.PGSimpleDataSource(); dataSource.setServerName("localhost"); dataSource.setDatabaseName("db01"); dataSource.setUser("jwi"); dataSource.setPassword("password");
正在向使用
的命名服务注册JNDI API
DataSource Object
Context ctx = null; try { ctx = new InitialContext(); ctx.bind("jdbc/localDB", dataSource); } catch (NamingException e) { e.printStackTrace(); }
Oracle 文档说:
With the properties set, the system administrator can register the BasicDataSource object with a JNDI (Java Naming and Directory Interface) naming service.
所以我的第一个问题是:注册 DataSource
意味着什么?我上面的代码是否已经将 DataSource Object
注册为 JNDI
?
使用部署
DataSource Object
try { Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("jdbc/localDB"); dbCon = ds.getConnection(); ...
在这段代码中,IntelliJ 总是声称它无法解析方法 getConnection()
。
Oracle 文档说:
After a basic DataSource implementation is deployed by a system administrator, it is ready for a programmer to use.
所以我的第二个问题是:在这种情况下部署到底意味着什么?创建一个 DataSource Instance
并使用 JDNI
执行注册?或者部署意味着 Tomcat
context.xml
和 web.xml
配置 (Tomcat 8 JNDI How-To)?
如果有人对这个问题有详细的逐步说明,我将不胜感激,事实上,恕我直言,Oracle 文档在某些方面并不清楚。
对于第二个问题,部署意味着你的数据源是在tomcat中的context.xml中声明的。 这是 oracle 数据库的示例(您必须更改 postgres 的驱动程序):
<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
username="scott" password="tiger" maxTotal="20" maxIdle="10"
maxWaitMillis="-1"/>
之后,您可以编写 java 部分,为此您可以观看此 link http://www.javapractices.com/topic/TopicAction.do?Id=127
有关完整示例,这里有一个很好的教程 http://alvinalexander.com/blog/post/java/how-configure-tomcat-dbcp-connection-pool-pooling-postgres。
希望对您有所帮助