以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  利用Jena存储在Oracle的一段程序,高手劳驾看一下。  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=30176)


--  作者:zhangyu8301
--  发布时间:4/7/2006 10:10:00 PM

--  利用Jena存储在Oracle的一段程序,高手劳驾看一下。
import java.util.*;

import com.hp.hpl.jena.db.impl.DriverRDB;
import com.hp.hpl.jena.db.*;
import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.*;
public class WineOntologyPersistency
{
 public static final String Wine = "http://wine/";
 public static final String DB_URL = "jdbc:oracle:oci:@";
    public static final String DB_USER = "scott";
    public static final String DB_PASSWD = "tiger";
    public static final String DB = "Oracle";
    public static final String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
    static ModelMaker maker;
 
 public static void main(String args[])
 {
  OntDocumentManager.getInstance().addAltEntry( Wine, "file:pizza.owl" );

  try
  {
   Class.forName(DB_DRIVER);
  }
  catch(Exception e)
  {
   System.err.println( "Failed to load the driver for the database: " + e.getMessage() );
            System.err.println( "Have you got the CLASSPATH set correctly?" );

  }
  
  try
  {
            
            IDBConnection conn  = new DBConnection( DB_URL, DB_USER, DB_PASSWD,DB );
            
            conn.cleanDB();
            
            maker = ModelFactory.createModelRDBMaker( conn );
        }
        catch (Exception e)
        {
            e.printStackTrace();
            System.exit( 1 );
        }
        
        Model base = maker.createModel(Wine,false);
        
        OntModelSpec spec = new OntModelSpec(OntModelSpec.OWL_MEM);
        spec.setImportModelMaker(maker);
        OntModel m = ModelFactory.createOntologyModel(spec,base);
        
        m.read(Wine);
        
        

 }
}

编译没有问题,运行时出现:
com.hp.hpl.jena.db.RDFRDBException: DriverRDB.cleanDB() failed to acquire databa
se lock:
(com.hp.hpl.jena.db.RDFRDBException: Failed to lock database after 5 attempts.

.Try later or else call DriverRDB.unlockDB() after ensuring
that no other Jena applications are using the database.)
.Try again or call DriverRDB.unlockDB() if necessary.
        at com.hp.hpl.jena.db.impl.DriverRDB.cleanDB(DriverRDB.java:985)
        at com.hp.hpl.jena.db.DBConnection.cleanDB(DBConnection.java:150)
        at WineOntologyPersistency.main(WineOntologyPersistency.java:37)

我查了一下Jena 2 – Frequently Asked Questions  其中有一个问答是这样的:
Q: Why am I getting an exception on failure to lock or unlock the database?
A: The Jena2 storage subsystem uses a lock internally to implement a critical section for operations that modify the database structure (create/delete tables). The lock is implemented as a database table, i.e., if the table exists in the database, the lock is held. Normally, this lock should be transparent to applications. But if an application has an exception while in a critical section, the database may remain locked for subsequent applications. In this case, a user must manually unlock the database either by calling DriverRDB.unlockDB() or by deleting the table (Jena_Mutex) from the database.

看上去意思是说解决方法或者是调用 DriverRDB.unlockDB() 或者是删了Jena_Mutex这个表,问题是DriverRDB.unlockDB() 应该什么时候调用?写在什么地方?unlockDB()是静态方法吗,可以直接写成DriverRDB.unlockDB() 吗?Jena2.3自带的JavaDoc也没有DriverRDB这个类的说明!
如果采用第二种方法,去删除那个Jena_Mutex这个表,我找了一下数据库里没有这个表啊?这个表存在Oracle数据库里什么地方啊?
唉,一堆问题,望高手看一下问题何在!万分感谢!


--  作者:wolf_xjf
--  发布时间:4/8/2006 3:28:00 PM

--  
这位老大,小弟不能帮忙,到想麻烦你一下,你能告诉我如何,给jena 配置运行环境,参数怎么设啊!我用的是jena2.3,小弟找不到指导文章啊!帮忙指点一二吧!

--  作者:zhangyu8301
--  发布时间:4/8/2006 3:34:00 PM

--  
把jena下lib文件夹下的所有.jar文件,加入到classpath中。
--  作者:dylloveyou
--  发布时间:4/12/2006 10:27:00 PM

--  
jena是什么啊,干什么用啊,能否介绍一下。谢谢!
--  作者:bandaotiehe
--  发布时间:11/14/2008 6:53:00 PM

--  

请问楼主,我自己写的一个链接oracle数据库的程序运行的时候老师说,错误代码如下:DBerrorjava.sql.SQLException: Io 异常: SO Exception was generated
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:335)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:361)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:442)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:321)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.hp.hpl.jena.db.DBConnection.getConnection(DBConnection.java:122)
at com.hp.hpl.jena.db.DBConnection.getDriver(DBConnection.java:283)
at com.hp.hpl.jena.db.DBConnection.containsModel(DBConnection.java:226)
at com.hp.hpl.jena.db.DBConnection.containsDefaultModel(DBConnection.java:239)
at com.hp.hpl.jena.db.impl.GraphRDBMaker.getGraph(GraphRDBMaker.java:66)
at com.hp.hpl.jena.rdf.model.impl.ModelMakerImpl.createDefaultModel(ModelMakerImpl.java:59)
at com.dareway.cn.TestOracle.main(TestOracle.java:41)
com.hp.hpl.jena.db.RDFRDBException: Failure to instantiate DB Driver:oracle java.sql.SQLException: Io 异常: SO Exception was generated
at com.hp.hpl.jena.db.DBConnection.getDriver(DBConnection.java:296)
at com.hp.hpl.jena.db.DBConnection.containsModel(DBConnection.java:226)
at com.hp.hpl.jena.db.DBConnection.containsDefaultModel(DBConnection.java:239)
at com.hp.hpl.jena.db.impl.GraphRDBMaker.getGraph(GraphRDBMaker.java:66)
at com.hp.hpl.jena.rdf.model.impl.ModelMakerImpl.createDefaultModel(ModelMakerImpl.java:59)
at com.dareway.cn.TestOracle.main(TestOracle.java:41)
Caused by: java.sql.SQLException: Io 异常: SO Exception was generated
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:335)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:361)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:442)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:321)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.hp.hpl.jena.db.DBConnection.getConnection(DBConnection.java:122)
at com.hp.hpl.jena.db.DBConnection.getDriver(DBConnection.java:283)
... 5 more
Exception in thread "main"
您知道这个是什么原因吗?
我的程序是;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.ModelMaker;

public class TestOracle {

/**
  * @param args
  * @throws ClassNotFoundException
  */
public static void main(String[] args)  {
  // TODO Auto-generated method stub
  try {
  String className = "oracle.jdbc.driver.OracleDriver";   // path of driver class
  
  
  try {
   Class.forName (className);
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }  
  
  // Load the Driver
  String DB_URL="jdbc:oracle:thin:@10.2.0.70";                // URL of database
  String DB_USER="hrserve";                              // database user id
  String DB_PASSWD="hrserve";                              // database password
  String DB="oracle";                            // database type

//   Create database connection
  IDBConnection conn = new DBConnection ( DB_URL, DB_USER, DB_PASSWD, DB );
  ModelMaker maker = ModelFactory.createModelRDBMaker(conn) ;
         
//   create or open the default model
  Model model = maker.createDefaultModel();
//System.out.print("成功了啊 ,呵呵"+model.isEmpty());
//   Close the database connection
  
   conn.close();
  } catch (SQLException e) {
   System.out.print("错误结果是"+e.toString());
   // TODO Auto-generated catch block
   e.printStackTrace();
   
  }

  
  
}

}


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
892.090ms