2012-04-19 12 views
-1

私はeXist-dbの特定のコレクションにファイルをアップロードできるアプリケーションを作成しています。私はこのアプリケーションをcode I found on the eXist web siteから外しています。Javaを使用してファイルをeXist-dbにアップロード

残念ながら、コードが動作するようには思えない - 私はそれをテストするとき、私はURI XMLDB変更するとエラーメッセージが

usage: StoreExample collection-path document 

を表示されます:存在:// localhostを:に8080 /存在/ XMLRPCにhttp:// localhost:8080 /に存在する/管理/ admin.xql; JSESSIONID = 1fkd05vvfv6kqとにコレクション/DB/COL1は、次のエラーが発生します。

Exception in thread "main" org.xmldb.api.base.XMLDBException: 
    at org.xmldb.api.DatabaseManager.getDatabase(Unknown Source) 
    at org.xmldb.api.DatabaseManager.getCollection(Unknown Source) 
    at org.xmldb.api.DatabaseManager.getCollection(Unknown Source) 
    at addingfiletest.exp.main(exp.java:44) 

ligne 44 ==> Collection col =DatabaseManager.getCollection(URI + collection); 

ここに私のコードです:

import java.io.File; 
import org.xmldb.api.DatabaseManager; 
import org.xmldb.api.base.Collection; 
import org.xmldb.api.base.Database; 
import org.xmldb.api.base.*; 
import org.xmldb.api.modules.CollectionManagementService; 
import org.xmldb.api.modules.XMLResource; 

public class exp { 

    public final static String URI = "http://localhost:8080/exist/admin/admin.xql;jsessionid=1fkd05vvfv6kq"; 

    public static void main(String args[]) throws Exception { 

     String collection = "/db/col1", file = "D:/PFE/lien.txt"; 

     // initialisation du driver 
     String driver = "org.exist.xmldb.DatabaseImpl"; 
     Class cl = Class.forName(driver); 
     Database database = (Database) cl.newInstance(); 
     DatabaseManager.registerDatabase(database); 

     // Accès à la collection 
     Collection col = DatabaseManager.getCollection(URI + collection); 

     // créer une nouvelle XMLResource; un id sera affecté à la nouvelle 
     // ressource 
     XMLResource document = (XMLResource) col.createResource(null, 
      "XMLResource"); 
     File f = new File(file); 
     if (!f.canRead()) { 
     System.out.println("cannot read file " + file); 
     return; 
     } 

     document.setContent(f); 
     System.out.print("storing document " + document.getId() + "..."); 
     col.storeResource(document); 
     System.out.println("ok."); 
    } 
} 

ありがとう、ありがとう、ありがとう。

答えて

0

私の知る限りでは、eXist-dbのJavaの側面を知っている人は、stackoverflowではなく、exist-open、eXist-dbメーリングリストにアクセスするのが最適です。私はそこにあなたの質問を掲示して公開することを提案します。あなたは失望しません。また、実行しているeXistのバージョン番号も含めてください。がんばろう!

0

私は過去に、小さなアプリケーションを作成し、作成した新しいコレクションのための私の解決策だった: - ; EX - xqj2-0.0.1.jar存在-XQJ-1.0.1.jar 私は使用はXQJライブラリ(例が存在します。

private static void conectar() { 
    try { 
     xqc = crearconexion("localhost", "8080", "admin", "abc123."); 
    } catch (XQException ex) { 
     System.out.println("No hay conexion con la base de datos"); 
    } 
} 

    private static XQConnection crearconexion(String host, String puerto, String admin, String pass) throws XQException { 
    xqjd = new ExistXQDataSource(); 
    xqjd.setProperty("serverName", host); 
    xqjd.setProperty("port", puerto); 
    xqjd.setProperty("user", admin); 
    xqjd.setProperty("password", pass); 
    xqc = xqjd.getConnection(); 
    return xqc; 
} 

(javaの)私は(.....)ここ をこのコレクションを作成する方法を公開してい

consulta = 
      "declare namespace exist = \"http://exist.sourceforge.net/NS/exist\"; \n" 
      + "declare namespace request=\"http://exist-db.org/xquery/request\"; \n" 
      + " declare namespace xmldb=\"http://exist-db.org/xquery/xmldb\"; \n" 
      + " declare variable $file as xs:string { \"" 
      + "<menu>\n" 
      + " <maquina>\n" 
      + "  <listname>"+maquina.getNombre()+"</listname>\n" 
      + " </maquina>\n" 
      + " <game name=\'0\'>\n" 
      + "  <description></description>\n" 
      + "  <cloneof/>\n" 
      + "  <manufacturer></manufacturer>\n" 
      + "  <personalizado>\n" 
      + "   <estrellas>0</estrellas>\n" 
      + "   <lotengo>No</lotengo>\n" 
      + "   <jugado>No</jugado>\n" 
      + "   <rutaimagen/>\n" 
      + "  </personalizado>\n" 
      + "  <rating></rating>\n" 
      + "  <year></year>\n" 
      + "  <genre></genre>\n" 
      + "  <clave>1</clave>\n" 
      + " </game>\n" 
      + "</menu>\"" 
      + " }; \n" 
      + " declare variable $name as xs:string { \""+maquina.getFile()+"\" }; \n" 
      + " declare variable $collection as xs:string { \""+RUTAROOT+"\" }; \n" 
      + "  \n" 
      + " <results> \n" 
      + " { \n" 
      + " let $load-status := xmldb:store($collection, $name, $file) \n" 
      + " return <load-status> { $load-status } </load-status> \n" 
      + " } \n" 
      + " </results> "; 

     ejecutarConsultaU(consulta); 

private static void ejecutarConsultaU(String cadenaAConsultar) throws XQException { 
    XQExpression consulta; 
    consulta = xqc.createExpression(); 
    System.out.println("Inicio consulta \n"); 
    System.out.println(cadenaAConsultar);//it shows your query 
    System.out.println("fin consulta \n"); 
    consulta.executeCommand(cadenaAConsultar); 
} 
: - EXあなたはconexionを作成する必要がある最初の xqjapi.jar
関連する問題