Я пытаюсь настроить источник данных jsbc для моего приложения вкак правильно настроить JNDI источника данных в котом 8
-tomcat_home- \ конф \ Catalina \ локальный
Мое приложение " reportExport».war так я создал reportExport.xml с этим содержанием:
<Context>
<Resource name="jdbc/mssql" auth="Container" type="javax.sql.DataSource"
username="user"
password="pass"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:52015;databaseName=rewe;integratedSecurity=false;"
maxActive="20"
maxIdle="10"
validationQuery="select 1" />
</Context>
Я добавил к web.xml это:
<resource-ref>
<description>
This app requires a ms sql connection.
</description>
<res-ref-name>
jdbc/mssql
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
Возможно, я могу опустить поля, которые я уже дал в reportExport.xml ?!
в Java я стараюсь, чтобы получить соединение, как это:
((DataSource) (new InitialContext()).lookup("java:comp/env/jdbc/mssql")).getConnection()
Соединение работает плавник в Java, но есть 2 проблемы.
Первая проблема: если я поставил reportExport.xml в правильный путь до развертывания приложения Tomcat бросает исключение:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].Sta
ndardContext[/reportExport]]
...
Caused by: java.lang.IllegalArgumentException: The main resource set specified [C:\Users\moritz\entwicklung\apache-tomca
t-8.0.18\webapps\reportExport] is not valid
...
11-Feb-2015 14:15:38.303 SEVERE [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Error de
ploying configuration descriptor C:\Users\moritz\entwicklung\apache-tomcat-8.0.18\conf\Catalina\localhost\reportExport.x
ml
...
После развертывания веб-приложения начало прекрасно. Вторая проблема - это reportExport.xml удаляется при распаковке веб-приложения.
Так что что-то не так с моей настройкой: я хочу, чтобы системный администратор настроил источник данных, предназначенный для моего приложения. Мне нравится идея с отдельным файлом для каждого веб-приложения, но исключение при первой настройке и удаление при распаковке являются плохими. С другой стороны, вероятно, хорошо настроить источник данных в server.xml, но как настроить элемент «context» там, чтобы сделать источник данных доступным только для определенного приложения?
На данный момент у меня есть «resource-ref» в моем web.xml. Что с этим связано в отличие от ResourceLink в context.xml? Поскольку в файле server.xml нет элемента Context, я должен добавить его или добавить только ресурс? – dermoritz
Насколько я знаю, вам нужен resourcelink в вашем контексте, те, что в web.xml, предназначены для документации (или на них не ссылаются java: comp/env, поскольку они не являются средой). Но я могу ошибаться, поскольку я не очень много играл с этим. Начните с того, что работает, и затем вы можете его настроить. a) объявить DataSource в глобальных ресурсах, b) добавить context.xml в ваш военный файл, c) описать resourcelink в вашем контексте. xml. Если он работает, переместите описание контекста на элемент хоста server.xml, если вы не хотите, чтобы контекстный файл в вашей войне (но почему бы вам не захотеть его там?) – Zielu