我试图创建一个新的数据源,用于在WebSphere8.5传统中连接到neo4j。因为neo4j jdbc驱动程序只实现javax.sql.DataSource,而不实现connectionPoolDataSource接口。为了解决这个问题,我创建了一个新的JDBC提供程序,它指向一个自定义的Neo4jConnectionPoolDataSource类,并为此定义了完整的类路径。
在尝试从Websphere控制台测试datasource连接时,我得到了以下错误。
DSRA8200W:数据源配置:DSRA8020E:警告:数据源类com.test.ds.neo4JConnectionPoolDataSource上不存在属性“Database Name”。DSRA8201W:数据源配置:DSRA8040I:无法连接到数据源JDBC/NEO4JTEST。遇到com.ibm.ws.rsadapter.exceptions.DataStoReadApterException:DSRA8101E:DataSource类不能用作单阶段:ClassCastException:com.sun.proxy.$Proxy60与javax.sql.PooledConnection不兼容。com.ibm.ws.exception.wsException:DSRA8101E:DataSource类不能用作单阶段:ClassCastException:com.sun.proxy.$Proxy60与javax.sql.PooledConnection不兼容
任何关于这一点的建议都将是非常有帮助的。
自定义类代码段:
public class Neo4jConnectionPoolDataSource extends org.neo4j.jdbc.Neo4jDataSource implements javax.sql.ConnectionPoolDataSource {
private PrintWriter pw;
PooledConnection p1;
public Connection getConnection() throws SQLException {
return DriverManager.getConnection("jdbc:neo4j:bolt://localhost:port");
}
public Connection getConnection(String username, String password) throws SQLException {
return DriverManager.getConnection("jdbc:neo4j:bolt://localhost:port");
}
@Override
public PrintWriter getLogWriter() throws SQLException {
return pw;
}
@Override
public void setLogWriter(PrintWriter out) throws SQLException {
pw = out;
}
@Override
public void setLoginTimeout(int seconds) throws SQLException {
}
@Override
public int getLoginTimeout() throws SQLException {
return 0;
}
@Override
public <T> T unwrap(Class<T> iface) throws SQLException {
return ConnectionPoolDataSource.class.equals(iface) ? (T) this : super.unwrap(iface);
}
@Override
public boolean isWrapperFor(Class<?> iface) throws SQLException {
return ConnectionPoolDataSource.class.equals(iface) || super.isWrapperFor(iface);
}
@Override
public PooledConnection getPooledConnection() throws SQLException {
System.out.println("Inside getPooledConnection with args + Neo4jConnectionPoolDataSource");
return new Neo4jPooledConnection(null,null);
}
@Override
public PooledConnection getPooledConnection(String paramString1,
String paramString2) throws SQLException {
return new Neo4jPooledConnection("username","password");
}
public class Neo4jPooledConnection implements PooledConnection {
private Connection con;
private String user;
private String password;
public Neo4jPooledConnection(String user, String password)
{
this.con = con;
this.user = user;
this.password = password;
}
public void addConnectionEventListener(ConnectionEventListener connectionEventListener)
{ }
public void removeConnectionEventListener(ConnectionEventListener connectionEventListener)
{ }
public void close()
throws SQLException
{
if (con != null) {
con.close();
con = null;
}
}
public Connection getConnection() throws SQLException {
if (con == null || con.isClosed()) {
con = ((user == null)
? Neo4jConnectionPoolDataSource.this.getConnection()
: Neo4jConnectionPoolDataSource.this.getConnection(user, password));
return con;
} else
{ throw new IllegalStateException();}
}
}
}
警告dsra8200w:DataSource配置:dsra8020e:warning:DataSource类com.test.ds.Neo4jConnectionPoolDataSource
上不存在属性“database name”,因为您的Neo4jConnectionPoolDataSource类没有定义setter方法setdatabasename(String databaseName)
,并且可能在数据源上配置了databaseName
属性,因此WebSphere Application Server不知道如何处理该值并记录警告。我希望该警告与您看到的另一个错误(ClassCastException)完全无关。
ClassCastException非常不寻常,因为它提到了一个html" target="_blank">动态代理实例,而我在发布的实现中没有看到任何动态代理。ClassCastException:com.sun.proxy.$proxy60与javax.sql.pooledConnection
不兼容。如果您能找到异常的完整堆栈,这将更容易调试。在应用服务器的ffdc日志下搜索一个包含ClassCastException的日志,并将完整的堆栈发送到此问题,如果还不清楚错误所在的话。
我有一个与post中指定的相同的要求,即为了审计目的,将用户id作为客户端标识符传递。在syscontext/连接上通过Hibernate传递ClientInfo/ClientIdentifier以进行审核 我遵循了8.2中提到的相同方法。自定义数据源连接准备程序的配置http://docs.spring.io/spring-data/jdbc/docs/current/reference/htm
我是Java新手,我试图连接到我的本地PSql数据库,但没有成功,下面是代码和错误的详细信息。 我有两个文件:dbcontract.java和testconnection.java,我正在使用Eclipse。 java TestConnection.java 错误:
我们可以在SpringDataNeo4j中为节点实体定制迭代器吗 我有一个将CustomHashCollection作为iterable的现有代码。我想将该项目转换为使用Neo4j。我可以使用自定义迭代器,因为它是大多数NodeEntity类中的私有成员<提前谢谢。
我尝试通过应用服务器Glassfish和JPA连接到mysql数据库。 我的persistence.xml如下所示: 有什么问题?
问题内容: 我正在尝试通过向其传递自定义数据源来填充表。我创建了一个带有表的简单报告。它自己的报告从ms sql数据库获取数据。我已经编写了一个与本示例类似的java类。但是我在表中没有任何价值。在该示例中,没有脚本。我已经检查了 代码行。它从现场获取数据并可以在报告中显示。因此,我猜想bean数据源未填充。我在中调用fill Table方法。如何在Jasper中使用来自Java的数据收集?我也尝
我正在尝试通过将自定义数据源传递给表来填充表。我创建了一个带有表格的简单报告。它自己从 ms sql 数据库中获取数据的报告。我编写了一个类似于此示例中的类的 java 类。但我在表中没有得到任何值。在示例中,没有脚本。我已经检查了 代码行。它从字段中获取数据,并可以在报告中显示。所以我想 bean 数据源没有填充。我在 中调用 fill Table 方法。如何在 jasper 中使用 java