我决定将最近的Wicket项目从6.20升级到7.0。对于主代码来说,这非常顺利,但是我在JUnit环境中使用JNDI的设置代码时遇到了问题。我在用 :
try {
// create and bind JNDI resource for database connection
InitialContext ic = new InitialContext();
ic.createSubcontext("java:comp/env");
ic.createSubcontext("java:comp/env/jdbc");
SQLServerConnectionPoolDataSource ds = new SQLServerConnectionPoolDataSource();
ds.setURL("jdbc:sqlserver://localhost:1433;databaseName=myProject;userName=myUser;password=myPassword");
ic.bind("java:comp/env/jdbc/MyProject", ds);
} catch (Exception e) {
e.printStackTrace();
}
这在Wicket 6.20上运行良好,但是javax.naming.NoInitialContextException
在对createSubcontext()的调用上引发了一个错误。
经过无济于事的试验之后,关键信息在http://www.eclipse.org/jetty/documentation/current/jndi-embedded.html中。
在Wicket 6.20和7.0之间从Jetty 7更改为Jetty 9的情况下,不再使用所有服务器的jar,因此wicket-quickstart原型取决于各个jar。为此,有必要在项目的pom.xml中添加对jetty-plus的依赖关系(这反过来会加载jetty-jndi):
<dependencies>
...
<!-- JETTY DEPENDENCIES FOR TESTING -->
...
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-plus</artifactId>
<version>${jetty9.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句