我有一个Java项目,我一直在尝试为我的Ingres数据库创建一个JNDI连接但是没有成功。我不确定是否需要包含某些特定于ingres的内容,但经过相当多的研究后,我无法将其用于工作。
在我的项目中,我在web.xml文件和context.xml
中有我的数据源信息context.xml具有以下信息
<Context>
<Resource name="jdbc/myDB" auth="Container" type="javax.sql.Datasource"
username="myUser" password="password" driverClassName="com.ingres.jdbc.IngresDriver"
url="databaseURL" maxActive="8" maxIdle="4" maxWait="100" />
</Context>
我的web.xml有以下信息
<web-app>
<resource-ref>
<description>Project Descrip</description>
<res-ref-name>jdbc/myDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
在我的java代码中,我试图使用以下四行来获取我的连接
Context initContext = new InitialContext();
Context envContext = (Context) initContent.lookup("java:comp/env");
Datasource ds = (DataSource) envContext.lookup("jdbc/myDB");
return ds.getConnection();
执行第三行后,我得到一个异常,说:NamingException - 无法创建资源实例
我找到了几十个同样例外的帖子,并尝试了建议的解决方案,没有运气。我正在使用Tomcat 7服务器并确保将必要的ingres jar(iijdbc.jar)包含到我的WEB-INF / lib文件夹和我的tomcat lib文件夹中。
非常感谢任何帮助或建议
答案 0 :(得分:0)
我对Ingres了解不多,但是如果尝试创建数据源类似于JBOSS和DB2或MySQL。我注意到你在WEB.XML中定义了你的resource-ref,但你没有提到servlet参数的任何内容。
<servlet>
<description>Servlet Description</description>
<display-name>MyServlet</display-name>
<servlet-name>MyServlet</servlet-name>
<servlet-class>servlet.MyServlet</servlet-class>
<init-param>
<param-name>MyDB</param-name>
<param-value>java:comp/env/jdbc/MyDB</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
然后你需要在你的sevlet中编码:
InitialContext initialContext = new InitialContext();
DataSource dataSource = (DataSource)initialContext.lookup(this.getInitParameter("MyDB"));
希望这有帮助。
答案 1 :(得分:0)
您可以尝试在{"query": "Select [System.Id] From WorkItems Where [System.WorkItemType] = 'Task' && [System.TeamProject] = 'MyProject' order by [Microsoft.VSTS.Common.Priority] asc, [System.CreatedDate] desc"}
标记中添加global="jdbc/myDB"
属性,如下所示:
Resource