2012-03-16 1 views
0

Мы являемся тремя разработчиками, работающими с Netbeans и Java. Один разработчик может просто получить доступ к удаленному серверу DB2 (используя тот же код). Другие два (включая меня) не могут.Почему я получаю разрешение, запрещенное JDBC и Netbeans?

Вот файл 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

Может ли ping машина db? –

+0

Можете ли вы создать соединение с самим NB? – madth3

+0

@yaelalfasi да, я могу пинговать его. – cbmeeks

ответ

1

Мне удалось найти решение. По-видимому, мне пришлось открыть порт 449 на моем брандмауэре. Я смотрел туда раньше, но так как это корпоративная машина, я не заметил, что был настроен другой брандмауэр ANOTHER (F-Secure), который блокировал его.

1

Сообщение Permission denied: connect в журнале заставляет меня думать, что это проблема политики Java. Скорее всего, у другого разработчика есть более разрешающая политика Java.

См http://docs.oracle.com/javase/6/docs/technotes/guides/security/PolicyFiles.html

+0

Интересная идея. Какие файлы ему нужно будет проверять? Java.policy в папке JRE? – cbmeeks

+0

Вы можете проверить местоположения по умолчанию, указанные в документе, который я связал, но если вы используете сервер приложений, он может иметь свою собственную политику. –

0

Я не уверен, о DB2, но в некоторых базах данных, такие как MySQL вы можете указать, какой IP-адрес (клиенты) может подключаться к базе данных, вы уверены, что это не такая проблема? Может быть, это политика безопасности, установленная в самой базе данных, которая позволяет подключать только некоторые IP-адреса (включая вашего партнера).

+0

Уже пробовал. Он заверил меня, что DB2 не делает ничего подобного. – cbmeeks

+0

Может ли ваш партнер изменить IP-адрес и имя своего компьютера, чтобы узнать, может ли он снова подключиться? –

0

Вы используете одного и того же пользователя (имя пользователя = «theusername») для подключения? Может быть, существует полиция, связанная с пользователем в IBM i (aka AS/400), которая не допускает множественных подключений.

Смежные вопросы