Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jdbc WAS中的自定义数据源将连接到neo4j引发错误_Jdbc_Neo4j_Websphere_Datasource - Fatal编程技术网

Jdbc WAS中的自定义数据源将连接到neo4j引发错误

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:警告:

我正在尝试创建一个新的数据源,用于连接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上
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();}
        }
     }
}