首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven Jetty插件中的Jetty JNDI错误

Maven Jetty插件中的Jetty JNDI错误
EN

Stack Overflow用户
提问于 2010-10-14 00:17:26
回答 2查看 6K关注 0票数 3

我正在尝试配置一个可以在调用Maven Jetty插件时使用的JNDI数据源。我尝试在WAR文件外部执行此操作,这样以后可能使用Jetty部署我们的webapp的任何人都不必编辑WAR的WEB-INF目录中的配置文件。我创建了jetty.xml文件,如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
 <!-- Atomikos XA aware (but not XA capable) JDBC data source -->
 <New id="sbeDataSource" class="org.mortbay.jetty.plus.naming.Resource">
  <Arg>jdbc/myDataSource</Arg>
  <Arg>
   <New class="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean">
    .......
   </New>
  </Arg>
 </New> 
</Configure>

然后,我在Maven插件中引用了这个文件,如下所示:

代码语言:javascript
复制
 <plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>maven-jetty-plugin</artifactId>
  <configuration>
   <jettyConfig>config/jetty.xml</jettyConfig>
  </configuration>
 </plugin>

然而,当我尝试通过mvn jetty: run -war运行webapp时,我得到了以下错误:

代码语言:javascript
复制
Embedded error: 
Object is not of type class org.mortbay.jetty.webapp.WebAppContext

如果我省略了顶层的<Configure>元素,而只是尝试通过以下方式直接创建一个新的JNDI资源:

代码语言:javascript
复制
<New id="sbeDataSource" class="org.mortbay.jetty.plus.naming.Resource">

然后我得到一个类似的错误:

代码语言:javascript
复制
Embedded error:
Object is not of type class org.mortbay.jetty.plus.naming.Resource

怎么回事?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-14 02:00:58

除了Pascal Thivent的回答之外,您的插件实际上看起来像jetty-env.xml,所以您可以配置maven-jetty- jetty.xml以便在<jettyEnvXml>中使用它

代码语言:javascript
复制
<plugin> 
  <groupId>org.mortbay.jetty</groupId> 
  <artifactId>maven-jetty-plugin</artifactId> 
  <configuration> 
   <jettyEnvXml>config/jetty.xml</jettyEnvXml> 
  </configuration> 
</plugin>
票数 2
EN

Stack Overflow用户

发布于 2010-10-14 01:55:17

根据documentation,在jetty.xml中声明的命名条目应该是jvm或服务器范围的:

如您所见,在其中声明每个作用域的命名条目的最自然的配置文件是:

webapp作用域- jvm或服务器scope

  • WEB-INF/jetty-env.xml或上下文xml文件-
  • jetty.xml

因此,您的jetty.xml应该包含如下内容:

代码语言:javascript
复制
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure id="Server" class="org.mortbay.jetty.Server">
 <!-- Atomikos XA aware (but not XA capable) JDBC data source -->
 <New id="sbeDataSource" class="org.mortbay.jetty.plus.naming.Resource">
  <Arg>jdbc/myDataSource</Arg>
  <Arg>
   <New class="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean">
    .......
   </New>
  </Arg>
 </New> 
</Configure>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3925771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档