首先,我不是java程序员,我是系统工程师,我正试图在wildfly 9上成功建立一个postgres连接池。
我以这种方式定义了数据源:
./jboss-cli.sh
[disconnected /] connect
[standalone@localhost:9990 /] module add --name=org.postgres --resources=/tmp/postgresql-9.4-1202.jdbc4.jar --dependencies=javax.api,javax.transaction.api
[standalone@localhost:9990 /] /subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)
{"outcome" => "success"}
[standalone@localhost:9990 /] data-source add --jndi-name=java:/PostGreDS --name=PostgrePool --connection-url=jdbc:postgresql://localhost/postgres --driver-name=postgres --user-name=user --password=password
[standalone@localhost:9990 /] /subsystem=datasources/data-source=PostgrePool/:write-attribute(name=max-pool-size,value=50)
{"outcome" => "success"}
当我列出我获得的数据源时:
[standalone@localhost:9990 /] /subsystem=datasources:read-resource
{
"outcome" => "success",
"result" => {
"data-source" => {
"ExampleDS" => undefined,
"PostgrePool" => undefined
},
"jdbc-driver" => {
"h2" => undefined,
"postgres" => undefined
},
"xa-data-source" => undefined
}
}
转到http://localhost:9990/console/App.html#profile/datasources
我可以看到这个值:
Name: PostgrePool
JNDI: java:/PostGreDS
Is enabled?: true
Statistics enabled?: false
Driver: postgres
当我点击“连接” - >它的工作原理是“测试连接”,所以我认为在数据源方面都可以。
然后我创建了一个WEB-INF / test.jsp,将其压缩成test.war(没有其他文件,没有web.xml)并部署。
<%@page
import="java.util.*,javax.naming.*,javax.sql.DataSource,java.sql.*"%>
<%
InitialContext ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup( "java:PostGreDS");
Connection con=ds.getConnection();
System.out.println("Connection successful");
con.close();
%>
当我加载它时,我得到:
javax.servlet.ServletException:javax.naming.NameNotFoundException:java:PostGreDS
我尝试了其他任何我能想到的方式,jdbc/PostGreDS
,jdbc/PostgrePool
以及其他许多方式。
我相信我在这里做了一些蠢事,但我无法找到它是什么。
我还试图在里面定义一个web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<description>DB Test App</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>java:/PostGreDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
但没有运气。 任何的想法?非常感谢你。
答案 0 :(得分:1)
好的,忘记了......我忘记了&#34; /&#34;在java:/PostGreDS
。
现在它有效。
我是否以这种方式使用连接池?