首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jetty6Eclipse数据源NameNotFoundException

Jetty6Eclipse数据源NameNotFoundException
EN

Stack Overflow用户
提问于 2011-08-30 11:44:25
回答 1查看 961关注 0票数 2

我尝试在Eclipse项目中为Jetty6Server配置一个数据源。

我将这些jars包含在我的lib文件夹中:

代码语言:javascript
复制
common-dbcp-1.4.jar
commons-pool-1.5.6.jar
jetty-naming-6.1.14.jar
the jetty-plus-6.1.11.jar

下面是WEB-INF的jetty-env.xml

代码语言:javascript
复制
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">

<Configure id="myapp" class="org.mortbay.jetty.webapp.WebAppContext">
    <New id="DSTest" class="org.mortbay.jetty.plus.naming.EnvEntry">
        <Arg><Ref id="myapp" /></Arg>
        <Arg>jdbc/DSTest</Arg>
        <Arg>
            <New class="org.apache.commons.dbcp.BasicDataSource">
                <Set name="driverClassName">org.postgresql.Driver</Set>
                <Set name="url">dbc:postgresql://localhost:5432/schoeneberg</Set>
                <Set name="username">postgres</Set>
                <Set name="password">deluxe</Set>
            </New>
        </Arg>
    </New>
</Configure>

来自WEB的我的web.xml -INF

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<web-app 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

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

    <servlet>
        <servlet-name>test</servlet-name>
        <servlet-class>de.test.Test</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>test</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
</web-app>

下面是Servlet代码:

代码语言:javascript
复制
@SuppressWarnings("serial")
public class Test extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        try {

            Context env = (Context) new InitialContext().lookup("java:comp/env/jdbc/DSTest");
        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }
}

这似乎是Jetty 6中的数据源和连接池的一个简单示例。但我总是得到这样的异常:

代码语言:javascript
复制
javax.naming.NameNotFoundException; remaining name 'env/jdbc/DSTest'
    at org.mortbay.naming.NamingContext.lookup(NamingContext.java:634)
    at org.mortbay.naming.NamingContext.lookup(NamingContext.java:665)
    at org.mortbay.naming.NamingContext.lookup(NamingContext.java:680)
    at org.mortbay.naming.java.javaRootURLContext.lookup(javaRootURLContext.java:112)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at de.test.Test.doGet(Test.java:25)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:324)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

有谁有主意吗?

感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2011-11-17 23:05:26

仅尝试使用资源名称:

代码语言:javascript
复制
final Context ctx = new InitialContext();
final DataSource ds = (DataSource) ctx.lookup("jdbc/DSTest");

对我来说很管用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7238453

复制
相关文章

相似问题

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