【发布时间】:2014-07-25 06:31:32
【问题描述】:
我正在尝试创建简单的网络应用程序。并坚持数据源注入。似乎有几个问题。所以我将从我的困惑开始。据我了解,将 DataSource 注入 Servlet 有两种(至少)方法:
- web.xml
- @Resource
web.xml 示例
<resource-ref>
<res-ref-name>jdbc/MyDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<injection-target>
<injection-target-class>ua.test.TestServlet</injection-target-class>
<injection-target-name>dataSource</injection-target-name>
</injection-target>
</resource-ref>
@Resource 示例
public class TestServlet extends HttpServlet{
@Resource
private DataSource dataSource;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
我的困惑:web.xml 在我的简单项目中的 Tomcat 7 中不起作用。在我看来,web.xml 选项应该可以工作,因为在 Java 5 之前没有注释。请解释一下。
更新:
数据源配置
<Resource name="jdbc/MyDB"
type="javax.sql.DataSource"
auth="Container"
username="SA"
password=""
driverClassName="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:file:~/database/my_db"
/>
【问题讨论】:
-
您的 web.xml 是否表明您使用的是 servlet 3.0?
-
在 servlet 中使用数据源是 Bad Pactise™。至少创建一个 DAO。就个人而言,我使用 Controller->Service->DAO 方法。它增强了代码的可读性、可维护性和模块化。
-
@MarkusWMahlberg 我的问题是关于技术,而不是实践。我只是想知道为什么它不起作用。而且,如果它能让你感觉更好,我确实在其他应用程序中有 DAO 层。 :-)
-
请添加Tomcat数据源配置。
-
你使用的是什么版本的Tomcat 7?
标签: java servlets tomcat7 web.xml