Храните ссылки JDBC вне web.xml для развертывания в Jetty, как в tomcat - PullRequest
0 голосов
/ 29 февраля 2012

Я пытаюсь переместить некоторые сервисы с моего сервера Tomcat на Jetty, просто чтобы провести некоторые сравнения.Очевидно, что я не хочу менять свои службы, но я экспериментирую с некоторыми проблемами, чтобы развернуть их с помощью JDBC.

Все мои службы используют одну и ту же базу данных для доступа к данным, поэтому я написал свою собственную библиотеку для выполнения своих запросов.Службы не имеют никакой информации о базе данных, они просто знают, что должны использовать библиотеку.В этой библиотеке я устанавливаю соединения с базой данных, используя такой код:

InitialContext ictx = new InitialContext();
Context envCtx = (Context) ictx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/mysql");

В Tomcat мои службы работают хорошо, просто добавив строку в context.xml:

<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/mysql" username="login" password="password" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/mysql" />

Так что япросто хочу сделать то же самое в Причал.Я добавил следующий блок в мой файл jetty.xml:

<New id="mysql" class="org.eclipse.jetty.plus.jndi.Resource">
    <Arg></Arg>
    <Arg>jdbc/mysql</Arg>
    <Arg>
        <New class="org.apache.commons.dbcp.BasicDataSource">
            <Set name="driverClassName">com.mysql.jdbc.Driver</Set>
            <Set name="url">jdbc:mysql://localhost:3306/mysql</Set>
            <Set name="username">login</Set>
            <Set name="password">password</Set>
        </New>
    </Arg>
</New>

Сервер запускается нормально и, кажется, работает, но я получаю сообщение об ошибке при попытке получить доступ к моим службам.В руководстве Jetty я обнаружил, что прямо написано, что мне нужно добавить некоторую информацию в web.xml, такую ​​как:

<resource-ref>
    <description>My DataSource Reference</description>
    <res-ref-name>jdbc/DSTest</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

Так что мне интересно, есть ли какое-нибудь другое решение, кроме как писать одинаковые строки во всей моей сети.файлы служб XML?Как добавить общий XML-файл для всех моих серверов с одинаковыми данными?

1 Ответ

0 голосов
/ 02 марта 2012

Вы можете добавить его в файл webdefault.xml, который используется в качестве основы для обработки web.xml.

Этот файл обычно находится в etc / webdefault.xml дистрибутива.

ура

...