为什么JDBC和Netbeans拒绝了我的权限



我们是三位开发人员,他们都在使用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 FilesApache Software Foundationapache-tomcat-6.0.35lib文件夹中,将其放在...webWEB-INFlib文件夹中,等等。似乎什么都不起作用。

我找到了一个解决方案。显然,我不得不打开防火墙上的449端口。我以前看过那里,但由于这是一台公司机器,我没有发现有另一个配置的防火墙(F-Secure)正在阻止它。

日志中的消息Permission denied: connect让我认为这是一个Java策略问题。很可能其他开发人员配置了一个更宽松的Java策略。

请参阅http://docs.oracle.com/javase/6/docs/technotes/guides/security/PolicyFiles.html

你们两个都使用同一个用户(username="theusername")进行连接吗?也许有一个与IBM i(又名AS/400)上的用户相关联的策略不允许多个连接

我不确定DB2,但在MySQL等一些数据库中,你可以限制哪些IP(客户端)可以连接到数据库,你确定这不是问题吗?可能是在数据库本身上设置的安全策略,只允许一些IP(包括您合作伙伴的)连接。

相关内容

  • 没有找到相关文章

最新更新