当前位置: 首页 > 知识库问答 >
问题:

使用嵌入式Jetty查找JNDI数据源失败

冯霖
2023-03-14

我正在使用嵌入式Jetty 9.2,并试图设置一个需要通过JNDI访问的Oracle数据源。我相信我已经正确地设置了这个,但是它不起作用,尽管花了一天的大部分时间在网上搜索。有人能帮忙吗?

以下是我的启动代码

    final String webdocs = "../abtc_core_war/src/main/webapp";
    WebAppContext webapp = new WebAppContext(webdocs, "/");
    webapp.setBaseResource(new ResourceCollection(Resource.newResource(webdocs)));

    final HandlerCollection handlers = new HandlerCollection();
    handlers.addHandler(webapp);

    Server server = new Server();
    ServerConnector connector=new ServerConnector(server);
    connector.setPort(8080);
    server.addConnector(connector);
    server.setHandler(handlers);

    //Enable parsing of jndi-related parts of web.xml and jetty-env.xml
    org.eclipse.jetty.webapp.Configuration.ClassList classlist = org.eclipse.jetty.webapp.Configuration.ClassList.setServerDefault(server);
    classlist.addAfter(
            "org.eclipse.jetty.webapp.FragmentConfiguration", 
            "org.eclipse.jetty.plus.webapp.EnvConfiguration", 
            "org.eclipse.jetty.plus.webapp.PlusConfiguration");

    try
    {
        server.start();
    }
    catch (Exception e)
    {
        server = null;
        throw e;
    }

    InitialContext ic = new InitialContext();
    DataSource ds = (DataSource)ic.lookup("java:comp/env/abtcDS");

    String url = "http://localhost:" + connector.getLocalPort() + "/app";
    System.out.println("URL  ==>  " + url);

这是我的jetty-env.xml(在我的战争的WEB-INF目录中):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"   "http://www.eclipse.org/jetty/configure_9_0.dtd">

<Configure id="wac" class="org.eclipse.jetty.webapp.WebAppContext">
    <New id="ResourceRef_abtcCoreDatasource" class="hello.org.eclipse.jetty.plus.jndi.Resource">
        <Arg></Arg>
        <Arg>abtcDS</Arg>
        <Arg>
            <New class="oracle.jdbc.OracleDriver">
                <Set name="DriverType">thin</Set>
                <Set name="URL">jdbc:oracle:thin:@nonprodcluster:1521/e1abtc_app</Set>
                <Set name="User">user</Set>
                <Set name="Password">pass</Set>
            </New>
        </Arg>
    </New>

    <New class="org.eclipse.jetty.plus.jndi.EnvEntry">
        <Arg><Ref refid="wac"/></Arg>
        <Arg>Test</Arg>
        <Arg type="java.lang.String">Value</Arg>
    </New>
</Configure>

这是我的web.xml参考资料:

<resource-ref id="ResourceRef_abtcCoreDatasource">
    <res-ref-name>abtcDS</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

我得到两个错误。当我启动服务器时,我得到

JAVAlang.IllegalStateException:没有要为名称javax绑定的内容。sql。数据源/默认值

在java:comp/env/abtcDS上查找abtcDS返回

异常线程"main"javax.naming.NameNotFoundExcema;其余名称'comp/env/abtcDS'

如果我试图查找java: comp/env我得到

javax。命名。NameNotFoundException;剩余名称“env”

所以看起来整个JNDI系统没有初始化。

提前感谢您的帮助。

共有1个答案

彭弘方
2023-03-14

根据ResourceRef_abtcoreDataSource id检查类条目。看来是的

你好组织。日食码头。加jndi。资源-

 类似资料:
  • 简单地说。我希望有一个oracle jndi数据源可用于带有连接池的webapp。我想maven安装该项目,然后手动将其部署到jetty hightide 7。xx服务器并运行。我在WEB-INF文件夹中放置了一个jetty env文件,如下所示。 这是我的dataSource bean... Maven安装很好,但当我部署到jetty服务器并启动它时,我会遇到以下错误。 我已经在jetty pl

  • 更具体地说,我得到了包含所有依赖项的可执行war。应用程序在没有jndi数据源的情况下启动,就像一个魅力一样,用jndi数据源运行它失败了。我认为在这样的配置中没有jetty.xml的位置,因此jetty-env.xml也不适用,因为jetty在默认情况下不会读取它。我试图使用jetty-web.xml进行jndi数据源配置,但jetty未能部署应用程序,返回503错误代码。我用的是9-M4型飞机

  • 我已经为使用外部Tomcat的Spring Boot应用程序的JNDI数据源连接进行了bellow提到的配置。 context.xml类似 为spring boot定义了Application.Properties 更新了web.xml,如

  • 如果有人能帮助我纠正代码中的问题,我将不胜感激。不知道我哪里错了。 当前我的persistence.xml包含

  • 问题内容: 我正在使用带有标准MySQL连接器API的Jetty 9.2(嵌入式),并且对应该如何设置它感到非常困惑。目前,我的 web.xml 文件中包含以下内容: …这在我的jetty-env.xml中: …然后执行以下代码初始化: 当我尝试启动服务器时,出现错误。我已经在代码初始化中尝试了许多不同的字符串变体,例如删除了对对象的调用,但是我只是不断地获得相同错误的变体,只是值不同。 这两个x

  • 我在Jetty服务器上的JNDI配置有问题。我无论如何都不能配置它,使Spring(3.0.5)之后可以检索JNDI变量。 我有一些凭证,我不想存储在属性中,这样它就不会存在于git repo中。我的web应用程序正在Jetty(最新版本9.2.3)上运行,因此我想到了在Jetty web应用程序上下文中存储这些凭证的想法。Jetty通过。所以我创建了jetty env。我的WEB-INF/中的x