我们是三位开发人员,他们都在使用Netbeans和Java。一个开发人员可以很好地访问远程DB2服务器(使用相同的代码)。另外两个(包括我)不能。
这是context.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/app_web">
<Resource name="jdbc/admin"
auth="Container"
type="javax.sql.DataSource"
maxActive="500"
initialSize="10"
maxIdle="50"
maxWait="10000"
username="theusername"
password="xxxxxxxxx"
driverClassName="com.ibm.as400.access.AS400JDBCDriver"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"
url="jdbc:as400://192.168.1.1;prompt=false;naming=system;prompt=false;naming=system;libraries=*libl;date format=iso;time format=iso"
/>
以下是我们获得的例外情况:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (The application requester cannot establish the connection. (Permission denied: connect))
Caused by: java.sql.SQLException: The application requester cannot establish the connection. (Permission denied: connect)
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:528)
WARNING: Failed to register in JMX: javax.naming.NamingException: Cannot create PoolableConnectionFactory (The application requester cannot establish the connection. (Permission denied: connect))
WARNING: Unexpected exception resolving reference
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (The application requester cannot establish the connection. (Permission denied: connect))
Caused by: java.sql.SQLException: The application requester cannot establish the connection. (Permission denied: connect)
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:528)
WARNING: Failed to register in JMX: javax.naming.NamingException: Cannot create PoolableConnectionFactory (The application requester cannot establish the connection. (Permission denied: connect))
我已将jt400.jar
文件放在C:\Program Files\Apache Software Foundation\apache-tomcat-6.0.35\lib
文件夹中,将其放在...\web\WEB-INF\lib
文件夹中,等等。似乎没什么用。
答案 0 :(得分:1)
日志中的消息Permission denied: connect
让我觉得这是一个Java策略问题。其他开发人员很可能配置了更宽松的Java策略。
请参阅http://docs.oracle.com/javase/6/docs/technotes/guides/security/PolicyFiles.html
答案 1 :(得分:1)
我能够找到解决方案。显然,我必须在防火墙上打开端口449。我之前看过那里,但由于这是一台公司机器,我没有注意到有一个阻止它的另一个防火墙配置(F-Secure)。
答案 2 :(得分:0)
我不确定DB2,但在某些数据库(如MySQL)中,您可以限制哪些IP(客户端)可以连接到数据库,您确定这不是问题吗?可能是在数据库本身设置的安全策略,只允许某些IP(包括您的伙伴)连接。
答案 3 :(得分:0)
你们俩是否都使用同一个用户(username =“theusername”)进行连接?也许在IBM i(也称为AS / 400)上与用户关联的政策不允许多个连接