2013-02-12 5 views
1

я до сих пор не могу получить эту вещь в моей голове:JNDI весна встроенный кот: Maven мульти проект модуля

это как мой проект выглядит:

--app 
--app-core  (spring) 
--app-model (pojo) 
--app-service (jersey) >> final package as war (dependencies (appcore+appmodel)) 

Теперь здесь, где должен мой applicationContext.xml сидит? ??? Зависимости от весны идут только в app-core ???? ...

UPDATE

приложение-жильный (весна) имеет applicationContext.xml, Знай, я хотел бы использовать JNDI со встроенным котом (кот-Maven-плагин).

Создали context.xml внутри WebAPP/META-INF это выглядит следующим образом: -

<?xml version='1.0' encoding='utf-8'?> 
<Context docBase="nweb" path="/nweb" reloadable="true"> 
<WatchedResource>WEB-INF/web.xml</WatchedResource> 
<Resource name="jdbc/TestDS" auth="Container" 
     type="javax.sql.DataSource" 
     driverClass="net.sourceforge.jtds.jdbc.Driver" 
     url="jdbc:sqlserver://localhost:1433;DatabaseName=TestData" 
     username="sa" password=""/>  
    </Context> 

..

мой 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" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> 

    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="java:/TestDS"></property> 
</bean>  
</beans> 

с вышеизложенным я получаю это ниже погрешности:

at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
    Caused by: javax.naming.NameNotFoundException: Name TestDSis not bound in this 
    Context 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:770) 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:153) 
    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:152) 
    at javax.naming.InitialContext.lookup(InitialContext.java:392) 
    at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:154) 
    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:178) 
    at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95) 
    at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:105) 
    at 

Любые предложения, если вы упускаете что-нибудь?

ответ

2

Обычно вы бы настроить ContextLoaderListener на вашем web.xml для контекста приложения корня:

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

Этот класс использует значение парам contextConfigLocation - из которого вы можете явно указать, где ваш applicationContext.xml должен быть :

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value> 
</context-param> 
+0

ОК сделали несколько изменений .. не могли бы вы проверить мой обновленный qn? –

+0

Не обращайте внимания на '' jee: jndi-lookup /> ' –

0

попробовать

<plugin> 
    <groupId>org.apache.tomcat.maven</groupId> 
    <artifactId>tomcat7-maven-plugin</artifactId> 
    <configuration> 
     <contextFile>webapp/META-INF/context.xml</contextFile> 
    </configuration> 
    </plugin> 
0

попробовать <property name="jndiName" value="java:comp/env/TestDS"></property>

0

, если вы используете встроенный 7, то кота, вы должны позвонить

tomcat.enableNaming(); 
0

У вас есть приложение работает с JNDI here. Я использую JNDI в PaaS, где они объясняют, как сделать привязку между вашим приложением и db. Вы можете получить более подробную информацию об этом tutorial.

В основном вы должны поместить это на datasource.xml файла:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/mydb" resource-ref="true" 
    expected-type="javax.sql.DataSource"/> 

Затем на сервере Tomcat, у вас есть несколько возможностей, как вы можете видеть на весеннем урока я ставлю ссылку. Самый простой способ - $ CATALINA_HOME/conf/context.xml и поставить что-то вроде этого.

<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" maxActive="20" maxIdle="10" minIdle="1" name="jdbc/mydb" password="dbUserPassword" testOnBorrow="true" testWhileIdle="true" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/dbName" username="dbUserName" validationInterval="5000" validationQuery="select 1"/> 

 Смежные вопросы

  • Нет связанных вопросов^_^