【发布时间】:2018-07-03 19:55:02
【问题描述】:
我们正在为我们的 Java Web 应用程序运行 glassfish 4,但遇到了计时器问题。普通的 servlet 调用能够享受任意数量的不同连接,这使得集成更加容易。然而,一旦我们添加了计时器,数据源就需要改为“XA”数据源。我们设置如下:
public XADataSource getNewConnection() {
Encapsulations encap = new Encapsulations();
XADataSource ds = null;
try {
Context ctx = new InitialContext();
if(!encap.getDataSource().equals("Production")){
ds = (XADataSource) ctx.lookup("jdbc/XA_TEST");
}else{
ds = (XADataSource) ctx.lookup("jdbc/XA");
}
} catch (Exception e) {
CatchException.logException(null, e);
String error = e.toString();
}
return ds;
}
问题在于,当 ds = (XADataSource) ctx.lookup("jdbc/XA_TEST") 行运行时,我们会收到此错误:
java.lang.ClassCastException: com.sun.gjc.spi.jdbc40.DataSource40 无法转换为 javax.sql.XADataSource
我们使用 sqljdbc42 jar 进行正常连接,所以看到 40 有点奇怪。有谁知道问题是什么?我们使用的数据源设置为 XADataSource,除了下载不同的 jar,我不知道缺少什么。
【问题讨论】:
标签: java sql-server connection