首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDO - datanucleus - HSQL错误

JDO - datanucleus - HSQL错误
EN

Stack Overflow用户
提问于 2012-05-17 22:15:54
回答 1查看 582关注 0票数 0

对于我当前的项目,我必须使用HSQL-JDO。我正在编写样本应用程序,以检查这是如何工作的。如果我在jdbc中使用HSQL (没有任何orm),我的代码运行得很好。但是对于JDO,我得到了“套接字创建错误”。

[Server@187a84e4]: [Thread[main,5,main]]: checkRunning(false) entered [Server@187a84e4]: [Thread[main,5,main]]: checkRunning(false) exited [Server@187a84e4]: [Thread[main,5,main]]: checkRunning(false) entered [Server@187a84e4]: [Thread[main,5,main]]: checkRunning(false) exited [Server@187a84e4]: [Thread[main,5,main]]: checkRunning(false) entered [Server@187a84e4]: [Thread[main,5,main]]: checkRunning(false) exited [Server@187a84e4]: [Thread[main,5,main]]: checkRunning(false) entered [Server@187a84e4]: [Thread[main,5,main]]: checkRunning(false) exited JdbcOdbcDriver class loaded registerDriver: driver[className=sun.jdbc.odbc.JdbcOdbcDriver,sun.jdbc.odbc.JdbcOdbcDriver@a13f991] DriverManager.initialize: jdbc.drivers = null JDBC DriverManager initialized registerDriver: driver[className=org.hsqldb.jdbcDriver,org.hsqldb.jdbcDriver@44e06940] DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:8974/test_db") trying driver[className=sun.jdbc.odbc.JdbcOdbcDriver,sun.jdbc.odbc.JdbcOdbcDriver@a13f991] *Driver.connect (jdbc:hsqldb:hsql://localhost:8974/test_db) trying driver[className=org.hsqldb.jdbcDriver,org.hsqldb.jdbcDriver@44e06940] SQLState(08000) vendor code(-80) java.sql.SQLException: socket creation error at org.hsqldb.jdbc.Util.sqlException(Unknown Source) at org.hsqldb.jdbc.jdbcConnection.(Unknown Source) at org.hsqldb.jdbcDriver.getConnection(Unknown Source) at org.hsqldb.jdbcDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:78) at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1158) at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) at org.datanucleus.store.rdbms.ConnectionFactoryImpl$ManagedConnectionImpl.getConnection(ConnectionFactoryImpl.java:444) at org.datanucleus.store.rdbms.RDBMSStoreManager.(RDBMSStoreManager.java:264)

下面是主Server server = new Server(); server.setAddress("localhost"); server.setDatabaseName(0, "test_db"); server.setDatabasePath(0, "test_db"); server.setPort(8974); server.setTrace(true);中的代码

代码语言:javascript
复制
    Properties properties = new Properties();
    properties.setProperty("javax.jdo.PersistenceManagerFactoryClass","org.datanucleus.api.jdo.JDOPersistenceManagerFactory");
    properties.setProperty("javax.jdo.option.ConnectionDriverName","org.hsqldb.jdbcDriver");
    properties.setProperty("javax.jdo.option.ConnectionURL","jdbc:hsqldb:hsql://localhost:8974/test_db");
    properties.setProperty("javax.jdo.option.ConnectionUserName","SA");
    properties.setProperty("javax.jdo.option.ConnectionPassword","");
    properties.setProperty("javax.jdo.option.ConnectionPassword","");

    properties.setProperty("datanucleus.autoCreateSchema","true");
    properties.setProperty("datanucleus.validateTables","false");
    properties.setProperty("datanucleus.validateConstraints","false");

    PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory(properties);

    PersistenceManager pm = pmf.getPersistenceManager();
    Transaction tx=pm.currentTransaction();

    tx.begin();
    pm.makePersistent(new Session("aniruddha"));
    tx.commit();

    Query q = pm.newQuery("SELECT FROM "+Session.class.getName());

    List<Session> sessions = (List<Session>)q.execute();
    //Iterator<Session> iter = sessions.iterator();

    for(Session s : sessions){
        System.out.println(s.getSESSION_ID()+" : "+s.getSESSION_USERNAME());
    }

下面是我想要持久化的bean

@PersistenceCapable public class Session { private Session(){ // Default constructor required by jdo } public Session(String session_username){ SESSION_USERNAME = session_username; }

代码语言:javascript
复制
public long getSESSION_ID() {
    return SESSION_ID;
}
public String getSESSION_USERNAME() {
    return SESSION_USERNAME;
}
public void setSESSION_ID(long sESSION_ID) {
    SESSION_ID = sESSION_ID;
}
public void setSESSION_USERNAME(String sESSION_USERNAME) {
    SESSION_USERNAME = sESSION_USERNAME;
}


@PrimaryKey
@Persistent(valueStrategy=IdGeneratorStrategy.INCREMENT)
private long SESSION_ID;
private String SESSION_USERNAME;

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-19 01:18:56

如果服务器模式不工作,那么您还没有启动HSQLDB服务器。适用于我的任何形式,无论是URL或文件。我完全按照HSQLDB文档从命令行启动服务器。

对于服务器的应用程序接口调用,您似乎遗漏了对"server.start()“的调用。无论哪种方式,问题都出在HSQLDB服务器启动,而不是DataNucleus访问。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10637433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档