Развертывание службы Spring boot rest на tomcat: невозможно найти jdbc - PullRequest
1 голос
/ 01 ноября 2019

Служба 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.

  1. В моем context.xml определен ресурс javax.sql.DataSource вместе с resourceLink. Код вставлен ниже.
  2. В моем pom.xml есть раздел сборки с ресурсами и плагинами. Код вставлен ниже.
  3. В моем applicationContext.xml определен bean-компонент для класса org.springframework.jndi.JndiObjectFactoryBean со свойством jndiName, указывающим на ресурс jdbc, определенный в контексте xml.
  4. Изначально я нашел этот контекстxml не включался в war сборкой maven, поэтому я скопировал каталог meta-inf в папку main / java / resources, как предлагалось в некоторых постах. Теперь контекст xml включается в войну в папке meta-inf.
  5. Когда я развертываю войну, она не может запуститься и регистрирует ошибку ниже. Причина: 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подключение. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 02 ноября 2019

woooohoo! Я мог бы, наконец, выяснить ответ благодаря другому посту на stackoverflow! Я думаю, это была самая глупая ошибка, которую я когда-либо совершал. В моем контексте xml, элемент "context" должен был быть в верхнем регистре "C", то есть "Context" !!

Спасибо ребятам по этой ссылке!

Проблема с развертыванием WAR-файла. Не удалось запустить компонент []

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...