Проблема подключения к Java DB (Derby) при запуске приложения на Tomcat

 
 
 
Сообщения:1
Доброго времени суток форумчанам!

Итак, у меня имеется небольшое приложение, написанное в учебных целях и работающее с Java DB. ОС - Windows 7.
Соединение с БД выполняется в классе MainSystem:

private MainSystem() throws Exception {
        try {
            Class.forName("org.apache.derby.jdbc.ClientDriver");
            String url = "jdbc:derby://localhost:1527/people";
            con = DriverManager.getConnection(url, "app", "password");
        } catch (ClassNotFoundException e) {
            throw new Exception(e);
        } catch (SQLException e) {
            throw new Exception(e);
        }
    }

public static synchronized ManagementSystem getInstance() throws Exception {
        if (instance == null) {
            instance = new ManagementSystem();
        }
        return instance;
    }



В таком виде всё работает и нравится.
Однако при попытке перевести соединение в JNDI и распихать по context.xml/web.xml работать перестаёт и я получаю java.lang.NullPointerException (насколько мне известно, это говорит о неудачной попытке соединения с БД).

Вот изменённый фрагмент MainSystem.java:

public static synchronized MainSystem getInstance() {
        if (instance == null) {
            try {
                instance = new MainSystem();
                Context ctx = new InitialContext();
                instance.dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/PeopleDS");
                con = dataSource.getConnection();
            } catch (NamingException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return instance;
    }


context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/students">
    <Resource
		driverClassName="org.apache.derby.jdbc.ClientDriver"
		maxActive="4"
		maxIdle="2"
		maxWait="5000"
		name="jdbc/PeopleDS"
		auth="Container"
		username="app"
		password="password"
		type="javax.sql.DataSource"
		url="jdbc:derby://localhost:1527/people" 
        validationQuery="SELECT 1">
    </Resource>
</Context>


web.xml:

<servlet>
        <servlet-name>PeopleServlet</servlet-name>
        <servlet-class>people.web.PeopleServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>PeopleServlet</servlet-name>
        <url-pattern>/people</url-pattern>
    </servlet-mapping>
    
    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/PeopleDS</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>


Все необходимые .jar-ники derby лежат в Tomcat/lib и необходимые переменные (DERBY_HOME, DERBY_INSTALL etc) прописаны.

Очень прошу о помощи, потому что уже просто ума не приложу, что делаю неправильно.
Изменен:25 окт 2016 03:35
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет