Извините, если этот вопрос кажется повторяющимся, но я не смог найти подходящее решение из результатов поиска существующих сообщений.
У меня есть веб-приложение, использующее пул соединений JDBC.Ресурс пула соединений определен в файле meta-inf / context.xml файла war.Когда я развертываю файл war в tomcat, этот файл копируется (и переименовывается в соответствии с именем моего файла war) в папку conf / catalina / localhost tomcat.Мой код получает объект источника данных соединения следующим образом:
Context envCtx = (Context) new InitialContext().lookup("java:comp/env");
datasource = (DataSource) envCtx.lookup("jdbc/MYDB");
, и для моего context.xml определен следующий ресурс:
<Resource name="jdbc/MYDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
username="username"
password="password"
url="jdbc:sqlserver://myremote.database.server:1433;databaseName=testdb"
/>
Все это хорошо работает при развертывании файла warto tomcat.
Однако во время разработки в Eclipse и из-за зависимостей GWT мне часто приходится отлаживать, используя встроенный в GWT контейнер Jetty.
Когда я делаю это, вызывается InitialContext ()выдает следующее сообщение:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
Я пытался использовать jetty-env.xml в веб-инфе войны, но это тоже не сработало (та же ошибка), возможно, синтаксическая ошибка в jetty-env.xml или что-то еще.
Вот мой jetty-env:
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<New id="OTMFTDB" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg></Arg>
<Arg>jdbc/MYDB</Arg>
<Arg>
<New class="net.sourceforge.jtds.jdbcx.JtdsDataSource">
<Set name="User">username</Set>
<Set name="Password">password</Set>
<Set name="DatabaseName">testdb</Set>
<Set name="ServerName">myremote.database.server</Set>
<Set name="PortNumber">1433</Set>
</New>
</Arg>
</New>
</Configure>
И последнее, если я изменил имя jetty-env.xml на jetty-web.xml,затем я получаю 503 ошибку HTML, когда я пытаюсь подключить браузер.(eclipse показывает следующую ошибку: [WARN] Не удалось запустить контекст com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload@111a20c {/, E: \ dev \ src \ servers \ webservice \ war} java.lang.ClassNotFoundException: org.eclipse.jetty.server.Server)
Поэтому я считаю, что jetty-env не был загружен, а jetty-web есть, но мой jetty-web явно мешает настройкам GWT для jetty.