Maven Jetty 插件中的 Jetty JNDI 错误
我正在尝试配置一个可通过调用 Maven Jetty 插件使用的 JNDI 数据源。我试图在 WAR 文件外部执行此操作,以便以后使用 Jetty 部署我们的 web 应用程序的任何人都不必编辑 WAR 的 WEB-INF 目录内的配置文件。我创建了一个 jetty.xml 文件,如下所示:
<?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 插件中引用了该文件,如下所示:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<jettyConfig>config/jetty.xml</jettyConfig>
</configuration>
</plugin>
但是,当我尝试通过 mvn jetty:run-war 运行 web 应用程序时,出现以下错误:
Embedded error:
Object is not of type class org.mortbay.jetty.webapp.WebAppContext
如果我省略了顶部level
元素并尝试直接通过以下方式创建新的 JNDI 资源:
<New id="sbeDataSource" class="org.mortbay.jetty.plus.naming.Resource">
然后我收到类似的错误:
Embedded error:
Object is not of type class org.mortbay.jetty.plus.naming.Resource
什么给出了?
I am trying to configure a JNDI data source that can be used from an invocation of the Maven Jetty Plugin. I am trying to do this external to the WAR file, so that anyone who might later deploy our webapp with Jetty will not have to edit a configuration file inside the WAR's WEB-INF directory. I created a jetty.xml file as follows:
<?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>
I then referenced this file from within the Maven plugin as follows:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<jettyConfig>config/jetty.xml</jettyConfig>
</configuration>
</plugin>
However when I attempt to run the webapp via mvn jetty:run-war I get the following error:
Embedded error:
Object is not of type class org.mortbay.jetty.webapp.WebAppContext
If I leave out the top level <Configure>
element and just try to create a new JNDI resource directly via:
<New id="sbeDataSource" class="org.mortbay.jetty.plus.naming.Resource">
Then I get a similar error:
Embedded error:
Object is not of type class org.mortbay.jetty.plus.naming.Resource
What gives?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据文档,在
jetty.xml 应该是 jvm 或 Server 范围:
因此您的
jetty.xml
应包含如下内容:According to the documentation, naming entries declared in the
jetty.xml
are supposed to be jvm or Server scoped:So your
jetty.xml
should contain something like this:除了 Pascal Thivent 的答案之外,您的
jetty.xml
实际上看起来像jetty-env.xml
,因此您可以配置 maven-jetty-plugin 以将其与一起使用
:In addition to Pascal Thivent's answer, your
jetty.xml
actually looks likejetty-env.xml
, so you can configure maven-jetty-plugin to use it with<jettyEnvXml>
: