Java 爪哇及;SQL-Xadasource
我们正在为java web应用程序运行glassfish 4,并且遇到了计时器问题。普通的servlet调用能够享受任意多个不同的连接,这使得集成更加容易。但是,一旦我们添加了计时器,数据源就需要改为“XA”数据源。我们设立了一个这样的机构,如下所示:Java 爪哇及;SQL-Xadasource,java,sql-server,connection,Java,Sql Server,Connection,我们正在为java web应用程序运行glassfish 4,并且遇到了计时器问题。普通的servlet调用能够享受任意多个不同的连接,这使得集成更加容易。但是,一旦我们添加了计时器,数据源就需要改为“XA”数据源。我们设立了一个这样的机构,如下所示: public XADataSource getNewConnection() { Encapsulations encap = new Encapsulations(); XADataSource ds = null; t
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=(Xadasource)ctx.lookup(“jdbc/XA_测试”)行运行时,我们会遇到以下错误:
java.lang.ClassCastException:com.sun.gjc.spi.jdbc40.DataSource40不能强制转换为javax.sql.XADataSource
我们使用sqljdbc42 jar进行正常连接,因此在其中看到40有点奇怪。有人知道问题出在哪里吗?我们正在使用的数据源被设置为Xadasource,除了下载不同的jar之外,我不知道缺少了什么。我已经有一段时间没有使用Glassfish了,但据我所知,您应该为具有Xadasource接口实现的数据库提供程序安装jar。在MS SQL Server中,我使用了jTDS驱动程序
从代码片段中考虑的另一件事是,对于开发和生产,您应该具有不同的GalsFig配置,您应该将此类事情留给应用服务器而不在代码中。Glassfish是一个完整的JavaEE应用服务器,它具有包括数据库连接池在内的所有优点。
我们当前的jar具有Xadasource。我们可以进口它。cast错误是很奇怪的。该类实现了XADataSource接口吗?另外,在JavaEE环境中,您应该使用类似的东西来使用数据库@PersistenceContext(unitName=“yourPu”)私有EntityManager em代码>