Ale*_*ets 3 java web.xml servlets tomcat7
我正在尝试创建简单的网络应用程序.并坚持数据源注入.似乎有几个问题.所以我将从困惑开始.据我所知,有两种(至少)方法将DataSource注入Servlet:
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>
Run Code Online (Sandbox Code Playgroud)
@Resource示例
public class TestServlet extends HttpServlet{
@Resource
private DataSource dataSource;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Run Code Online (Sandbox Code Playgroud)
我的困惑: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"
/>
Run Code Online (Sandbox Code Playgroud)
尝试取出注释中的injection-target条目web.xml并使用该name属性@Resource:
public class TestServlet extends HttpServlet {
@Resource(name = "jdbc/MyDB")
private DataSource dataSource;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
Run Code Online (Sandbox Code Playgroud)
这在我使用Tomcat 7.0.50的本地测试中起作用.如果你正在寻找没有注释的方法,那么即使它应该给出他们的更改日志1,我也没有这样做.
编辑
我还没有找到解决方案,但我很好奇为什么这不起作用所以我看了一下injection-target代码.我发现它首先加载context.xml条目,并从中获取设置web.xml,但选择不覆盖它找到的配置,context.xml因为它已经看到了一个jdbc/MyDB条目.我不知道如何让injection-target设置进入context.xml或DB设置,如driverClassName成web.xml.
| 归档时间: |
|
| 查看次数: |
2954 次 |
| 最近记录: |