Jdbc WAS中的自定义数据源将连接到neo4j引发错误
我正在尝试创建一个新的数据源,用于连接WebSphere8.5中的neo4j。因为neo4j jdbc驱动程序只实现javax.sql.datasource,而不实现connectionPoolDataSource接口。为了解决这个问题,我创建了一个新的JDBC提供程序,它指向一个定制的Neo4jConnectionPoolDataSource类,并为该类定义了完整的类路径 我在尝试从Websphere控制台测试数据源连接时遇到以下错误 DSRA8200W:数据源配置:DSRA8020E:警告:数据源类com.test.ds.Neo4jConnectionPoolDataSource上不存在属性“databaseName”。 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不兼容 appserver日志中的错误堆栈 [7/2/19 6:36:16:248 UTC]000000 EC DSConfigurati W 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不兼容 位于com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException。(DataStoreAdapterException.java:256) 位于com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException。(DataStoreAdapterException.java:205) 位于com.ibm.ws.rsadapter.AdapterUtil.createDataStoreAdapterException(AdapterUtil.java:441) 位于com.ibm.ws.rsadapter.DSConfigHelper.getPooledConnection(DSConfigHelper.java:1340) 位于com.ibm.ws.rsadapter.DSConfigHelper.getPooledConnection(DSConfigHelper.java:1196) 位于com.ibm.ws.rsadapter.DSConfigurationHelper.getConnectionFromDSOrPooledDS(DSConfigurationHelper.java:2076) 位于com.ibm.ws.rsadapter.DSConfigurationHelper.getConnectionFromDSOrPooledDS(DSConfigurationHelper.java:1952) 位于com.ibm.ws.rsadapter.DSConfigurationHelper.testConnectionForGUI(DSConfigurationHelper.java:2820) 位于sun.reflect.GeneratedMethodAccessor548.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)中 位于java.lang.reflect.Method.invoke(Method.java:620) 位于com.ibm.ws.management.DataSourceConfigHelperMBean.testConnectionToDataSource2(DataSourceConfigHelperMBean.java:556) 位于com.ibm.ws.management.DataSourceConfigHelperMBean.testConnection(DataSourceConfigHelperMBean.java:484) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)中 位于java.lang.reflect.Method.invoke(Method.java:620) 在sun.reflect.misc.Trampoline.invoke(MethodUtil.java:88)中 位于sun.reflect.GeneratedMethodAccessor41.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)中 位于java.lang.reflect.Method.invoke(Method.java:620) 位于sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:292) 位于javax.management.modelmbean.RequiredModelMBean$4.run(RequiredModelMBean.java:1261) 位于java.security.AccessController.doPrivileged(AccessController.java:426) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:92) 位于javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1255) 位于javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:1093) 位于com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:832) 位于com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:814) 位于com.ibm.ws.management.AdminServiceImpl$1.run(AdminServiceImpl.java:1350) 位于com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118) 位于com.ibm.ws.management.AdminServiceImpl.invoke(AdminServiceImpl.java:1243) 位于com.ibm.ws.management.commands.AdminServiceCommands$InvokeCmd.execute(AdminServiceCommands.java:251) 位于com.ibm.ws.console.core.mbean.MBeanHelper.invoke(MBeanHelper.java:246) 位于com.ibm.ws.console.core.mbean.ResourceMBeanHelper.testNode(ResourceMBeanHelper.java:860) 位于com.ibm.ws.console.core.mbean.ResourceMBeanHelper.testConnection(ResourceMBeanHelper.java:292) 位于com.ibm.ws.console.resources.database.jdbc.WAS40DataSourceDetailAction.execute(WAS40DataSourceDetailAction.java:195) 位于org.apache.struts.action.RequestProcessor.processActionPerform(未知源) 位于org.apache.struts.action.RequestProcessor.process(未知源) 位于org.apache.struts.action.ActionServlet.process(未知源) 位于org.apache.struts.action.ActionServlet.doPost(未知源) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:595) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 位于com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1238) 位于com.ibm.ws.webcontainer.servlet.ServletWrapper.HandlerRequest(ServletWrapper.java:782) 位于com.ibm.ws.webcontainer.servlet.ServletWrapper.HandlerRequest(ServletWrapper.java:481) 位于com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.HandlerRequest(ServletWrapperImpl.java:178) 在com.ibm.ws.webcontainer.filter.webappfilter上Jdbc WAS中的自定义数据源将连接到neo4j引发错误,jdbc,neo4j,websphere,datasource,Jdbc,Neo4j,Websphere,Datasource,我正在尝试创建一个新的数据源,用于连接WebSphere8.5中的neo4j。因为neo4j jdbc驱动程序只实现javax.sql.datasource,而不实现connectionPoolDataSource接口。为了解决这个问题,我创建了一个新的JDBC提供程序,它指向一个定制的Neo4jConnectionPoolDataSource类,并为该类定义了完整的类路径 我在尝试从Websphere控制台测试数据源连接时遇到以下错误 DSRA8200W:数据源配置:DSRA8020E:警告:
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();}
}
}
}