Jetty 8 - 如何从jetty-env.xml配置JNDI信息

时间:2017-08-03 20:56:47

标签: java jetty

我有一个Jetty 8.1.16的webapp,它使用JNDI来读取数据库连接信息。该应用程序使用maven构建,可以使用maven jetty插件在开发机器上成功运行。

但是,在部署到远程服务器时,jetty无法找到JDNI数据源:

SEVERE: [application] DataSource JNDI name not found.
javax.naming.NameNotFoundException; remaining name 'env/jdbc/Foo'

尝试以编程方式获取时:

DataSource datasource = (DataSource)ctx.lookup( "java:comp/env/jdbc/" + datasourceName);

使用jetty-env.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<Configure id='wac' class="org.eclipse.jetty.webapp.WebAppContext">
  <New id="Foo" class="org.eclipse.jetty.plus.jndi.Resource">
    <Arg></Arg>
    <Arg>jdbc/Foo</Arg>
    <Arg>
      <New class="com.microsoft.sqlserver.jdbc.SQLServerXADataSource">
        <Set name="URL">Connection String</Set>
      </New>
    </Arg>
  </New>
</Configure>

和web.xml中的资源定义:

<resource-ref>
    <description>Foo DataSource Reference</description>
    <res-ref-name>jdbc/Foo</res-ref-name>
    <res-type>javax.sql.XADataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

start.ini

Options=Server,jsp,jmx,resource,websocket,ext,plus,annotations

etc/jetty.xml
etc/jetty-deploy.xml
etc/jetty-webapps.xml
etc/jetty-contexts.xml
etc/jetty-testrealm.xml
etc/jetty-plus.xml
etc/jetty-annotations.xml

此时我完全被击败了。

Using the fully qualifying name in jetty-env.xml doesn't work. Having the code only call the partial name doesn't work 将jetty plus添加到选项中并不起作用。

0 个答案:

没有答案