Служба My Spring Boot Rest прекрасно работает в рабочем пространстве Eclipse. Я могу генерировать WAR без каких-либо проблем. Однако при развертывании в tomcat он не может связать мои источники данных из context.xml. Точная ошибка приведена ниже.
Причина: javax.naming.NameNotFoundException: Имя [jdbc / MyDB] не связано в этом контексте. Невозможно найти [jdbc]. at org.apache.naming.NamingContext.lookup (NamingContext.java:817)
Вот то, что я сделал до сих пор, основываясь на других публикациях на stackoverflow.
- В моем context.xml определен ресурс javax.sql.DataSource вместе с resourceLink. Код вставлен ниже.
- В моем pom.xml есть раздел сборки с ресурсами и плагинами. Код вставлен ниже.
- В моем applicationContext.xml определен bean-компонент для класса org.springframework.jndi.JndiObjectFactoryBean со свойством jndiName, указывающим на ресурс jdbc, определенный в контексте xml.
- Изначально я нашел этот контекстxml не включался в war сборкой maven, поэтому я скопировал каталог meta-inf в папку main / java / resources, как предлагалось в некоторых постах. Теперь контекст xml включается в войну в папке meta-inf.
- Когда я развертываю войну, она не может запуститься и регистрирует ошибку ниже. Причина: javax.naming.NameNotFoundException: имя [jdbc / MyDB] не связано в этом контексте. Невозможно найти [jdbc]. в org.apache.naming.NamingContext.lookup (NamingContext.java:817)
Context xml ==>
<context>
<Resource name="jdbc/MyDB" auth="Container" type="javax.sql.DataSource"
username="uid" password="pwd" driverClassName="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://myserver:1433/mydatabase" maxActive="8"
maxIdle="4" validationQuery="select 1" />
<ResourceLink name="jdbc/MyDB"
global="jdbc/MyDB"
type="javax.sql.DataSource" />
</context>
pom.xml ==>
<build>
<resources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<configuration>
<mainClass>com.passg.springboot.SpringBootRestApiApp</mainClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
applicationContext.xml ==>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/MyDB"/>
</bean>
Ошибка ==>
Caused by: javax.naming.NameNotFoundException: Name [jdbc/MyDB] is not bound in this Context. Unable to find [jdbc].
at org.apache.naming.NamingContext.lookup(NamingContext.java:817)
at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
at org.apache.naming.NamingContext.lookup(NamingContext.java:827)
at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
at org.apache.naming.NamingContext.lookup(NamingContext.java:827)
at org.apache.naming.NamingContext.lookup(NamingContext.java:173)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:163)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:155)
at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:179)
at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)
at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:106)
at org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java:231)
at org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:217)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1648)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1585)
... 110 more
Мне как-то нужно мое развернутое приложение tomcat, чтобы иметь возможность распознавать контекст xml и создавать jndiподключение. Любая помощь будет принята с благодарностью.