You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by Giota Karadimitriou <Gi...@eurodyn.com> on 2006/01/20 12:10:37 UTC

Re: Database persistent storage

Hello,

I ran into the same problems recently as the one faced
by Rick Milheron <milhri> and described in this thread. 

I noted that the problem with ${wsp.home} and ${wsp.name}

>org.apache.jackrabbit.core.config.ConfigurationException: Replacement
> not found for ${wsp.home}

appears only in the '<Versioning>' part of repository xml,
while everything works fine in <Workspace> part of repository xml.

Moreover, this problem seems to appear only with
DerbyPersistenceManager/SimpleDbPersistenceManager while '<Versioning>' 
part has no problem when I replaced it with XMLPersistenceManager. 

Also, when I replaced ${wsp.home} with 'workspaces' and ${wsp.name} with
'default' in '<Versioning>' part, things worked out without exception
but nothing appeared under repotest\versions directory while when I had
done it with XMLPersistenceManager there were 2 dirs under
repotest\versions:
repotest\versions\blobs and repotest\versions\data. I even changed the
database name to db1 in order to create new derby database for
versioning but still nothing appeared under repotest\versions.

To summarize, the versioning part in each of the aforementioned cases
is:

1. (the repository that fails, where '<Versioning>' still has
${wsp.home} and ${wsp.name})

<Versioning rootPath="${rep.home}/versions">
        <FileSystem
 
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="${rep.home}/versions"/>
        </FileSystem>
         <PersistenceManager
class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
           <param name="driver"
value="org.apache.derby.jdbc.EmbeddedDriver"/>
           <param name="url"
value="jdbc:derby:${wsp.home}/db;create=true"/>
           <param name="schema" value="derby"/>
           <param name="schemaObjectPrefix" value="${wsp.name}_"/>
           <param name="externalBLOBs" value="false"/>
        </PersistenceManager>
    </Versioning>

2. The repository where I replaced ${wsp.home} with 'workspaces' and
${wsp.name} with 'default' in '<Versioning>' part. Nothing appears under
versions/ directory


<Versioning rootPath="${rep.home}/versions">
        <FileSystem
 
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="${rep.home}/versions"/>
        </FileSystem>
         <PersistenceManager
class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
           <param name="driver"
value="org.apache.derby.jdbc.EmbeddedDriver"/>
           <param name="url"
value="jdbc:derby:workspaces/db1;create=true"/>
           <param name="schema" value="derby"/>
           <param name="schemaObjectPrefix" value="default_"/>
           <param name="externalBLOBs" value="false"/>
        </PersistenceManager>
    </Versioning>

3. The repository with xml persistence manager, no problem there

<Versioning rootPath="${rep.home}/versions">
        <FileSystem
 
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="${rep.home}/versions"/>
        </FileSystem>
        <PersistenceManager
 
class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" />
    </Versioning>

---

Apart from replacing ${wsp.home} and ${wsp.name} with hardcoded values
is there any other suggestion as to where to search/what I could do in
order to resolve this? Also is it normal that nothing appears under
/versions directory?

regards
Giota 

-------- Original Message --------
Subject: 	Re: Database persistent storage
Date: 	Mon, 19 Dec 2005 13:03:39 +0100
From: 	Stefan Guggisberg <st...@gmail.com>
Reply-To: 	jackrabbit-dev@incubator.apache.org
To: 	jackrabbit-dev@incubator.apache.org, milhri@lidp.com
References: 	<20...@lidp.com> 
<43...@gmail.com> <20...@lidp.com> 
<8a...@mail.gmail.com> 
<20...@lidp.com>



hi rick
i guess you will have to do some debugging ;) first of all
we need to know at which location in SimpleDbPersistenceManager
the exception is thrown. a full stack trace would be ideal.
what sql stmt caused the exception? etc etc

set breakpoints in the follwing methods of SimpleDbPersistenceManager:
#store(NodeState)
#store(PropertyState)
and step through the code.

also provide complete repository.xml *and* workspace.xml.

cheers
stefan

On 12/16/05, milhri@lidp.com <mi...@lidp.com> wrote:
> Edgar et.al.
>
>
>         Status report on DB2 persistent storage.  Have a problem with
> keys, I think.
>
> 1.
>
> Beginning from
>
> /home/milhri/repotestdb
>         jaas.config
>         repository.xml
>
>         <PersistenceManager
class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
>             <param name="driver"
value="COM.ibm.db2.jdbc.app.DB2Driver"/>
>             <param name="url" value="jdbc:db2:a2test"/>
>             <param name="user" value="a2test"/>
>             <param name="password" value="a2test"/>
>             <param name="schema" value="derby"/>
>             <param name="schemaObjectPrefix" value="${wsp.name}_"/>
>             <param name="externalBLOBs" value="false"/>
>         </PersistenceManager
>
> Executed program, got exception
>
> org.apache.jackrabbit.core.config.ConfigurationException: Replacement
> not found for ${wsp.name}
>
>
> 2.
>
> Hardcoded all ${wsp.name} to 'default', executed program.
>
> Got an error from db2 indicating columns were in excess of 1024.
>
> (Can provide more complete information if someone wants it).
>
> 3.
>
> Checked manual found that columns are max 1024 plus overhead.
>
> Made a new .ddl 'db2.ddl' where
>
> create table ${schemaObjectPrefix}PROP (PROP_ID varchar(1000)
> create table ${schemaObjectPrefix}BINVAL (BINVAL_ID varchar(1000)
>
> Changed repository.xml
>
>         <PersistenceManager
>
class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
>             <param name="driver"
value="COM.ibm.db2.jdbc.app.DB2Driver"/>
>             <param name="url" value="jdbc:db2:a2test"/>
>             <param name="user" value="a2test"/>
>             <param name="password" value="a2test"/>
>             <param name="schema" value="db2"/>
>             <param name="schemaObjectPrefix" value="default_"/>
>             <param name="externalBLOBs" value="false"/>
>         </PersistenceManager>
>
> 4.
>
> Executed program, got
>
> init >>>>>>>>>>>>javax.jcr.RepositoryException: /: unable to update
> item.: failed to write property state:
>
deadbeef-face-babe-cafe-babecafebabe/{http://www.jcp.org/jcr/1.0}primary
Type:
> [IBM][CLI Driver][DB2/6000] SQL0803N  One or more values in the INSERT
> statement, UPDATE statement, or foreign key update caused by a DELETE
> statement are not valid because the primary key, unique constraint or
> unique index identified by "1" constrains table "A2TEST.DEFAULT_PROP"
> from having duplicate rows for those columns.  SQLSTATE=23505
> : failed to write property state:
>
deadbeef-face-babe-cafe-babecafebabe/{http://www.jcp.org/jcr/1.0}primary
Type:
> [IBM][CLI Driver][DB2/6000] SQL0803N  One or more values in the INSERT
> statement, UPDATE statement, or foreign key update caused by a DELETE
> statement are not valid because the primary key, unique constraint or
> unique index identified by "1" constrains table "A2TEST.DEFAULT_PROP"
> from having duplicate rows for those columns.  SQLSTATE=23505
>
>         Directory structure looks like
>
> /home/milhri/repotestdb
>         jaas.config
>         repository
>                 meta
>                         rep.properties
>                         rootUUID
>                 namespaces
>                         ns_reg.properties
>                 nodetypes
>         repository.xml
>         versions
>         workspaces
>                 default
>                         workspace.xml
>
>
>         Tables are created
>
> Database product name is DB2/6000
>
>
> Schema A2TEST Table DEFAULT_BINVAL Column BINVAL_ID
> Schema A2TEST Table DEFAULT_BINVAL Column BINVAL_DATA
> Schema A2TEST Table DEFAULT_NODE Column NODE_ID
> Schema A2TEST Table DEFAULT_NODE Column NODE_DATA
> Schema A2TEST Table DEFAULT_PROP Column PROP_ID
> Schema A2TEST Table DEFAULT_PROP Column PROP_DATA
> Schema A2TEST Table DEFAULT_REFS Column NODE_ID
> Schema A2TEST Table DEFAULT_REFS Column REFS_DATA
>
>         And have some entries
>
> db2 "select * from DEFAULT_NODE"
>
> NODE_ID                              NODE_DATA
> ------------------------------------ -------------------------------
> deadbeef-face-babe-cafe-babecafebabe x'00187B696E7465726E616C7D76657
> cafebabe-cafe-babe-cafe-babecafebabe x'000E7B696E7465726E616C7D726F6
>
>
> db2 "select * from DEFAULT_PROP"
>
> PROP_ID
>
------------------------------------------------------------------------
----
>
deadbeef-face-babe-cafe-babecafebabe/{http://www.jcp.org/jcr/1.0}primary
Type
>
cafebabe-cafe-babe-cafe-babecafebabe/{http://www.jcp.org/jcr/1.0}primary
Type
>
> PROP_DATA
>
------------------------------------------------------------------------
--
>
x'0000000700000A31323636363637313430000000000001000000187B696E7465726E61
>
x'0000000700000A313236363636373134300000000000010000000E7B696E7465726E61
>
>
> db2 "select * from DEFAULT_REFS"
>
> NODE_ID                              REFS_DATA
> ------------------------------------
--------------------------------------
>   0 record(s) selected.
>
>
> db2 "select * from DEFAULT_BINVAL"
>
> BINVAL_ID                           BINVAL_DATA
> -----------------------------------
--------------------------------------
>   0 record(s) selected.
>
>
>
> On Fri, Dec 16, 2005 at 02:43:03PM -0300, Edgar Poce wrote:
> > Hi rick,
> >
> > On 12/16/05, milhri@lidp.com <mi...@lidp.com> wrote:
> > > Edgar
> > >
> > >         Here is where I am to date:
> > >
> > > /home/milhri/repotestdb
> > >         jaas.config
> > >         repository.xml
> > >
> > >     <Workspace name="${wsp.name}">
> > ...
> > >     </Workspace>
> >
> > AFAIK the workspace part of the repository.xml[1] is used as a
> > template to create the workspace.xml[2], which contains the
workspace
> > specific settings. Once you changed the repository.xml settings the
> > existing workspaces configurations do not change. I'm not sure, but
I
> > think that might be the cause of your problem.
> >
> > Try to remove every folder under the repository home ("repository"
and
> > "workspaces"), modify the repository.xml to match your db config and
> > run jackrabbit. Jackrabbit should fill the ${xxx} variables for the
> > default workspace or any other workspace you create.
> >
> > hope this helps,
> > edgar
> >
> > [1] ${JACKRABBIT_HOME}/repository.xml
> > [2] ${JACKRABBIT_HOME}/workspaces/${WORKSPACE_NAME}/workspace.xml
> >
> >
> >
> >
> > >
> > >
> > >         I built a test program to exercise
java.sql.DatabaseMetaData and
> > > the connection utility I am using looks like
> > >
> > >       try
> > >       {
> > >          String driverStr = "jdbc:db2:"+dbname;
> > >          Class driveClass =
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
> > >          con = DriverManager.getConnection(driverStr, username,
pwsd);
> > >       }
> > >
> > > where dbname = "a2test", username = "a2test", and pwsd = "a2test".
> > > My test program functions properly
> > >
> > >
> > > e.g.
> > >
> > > /home/milhri/QueryDbMeta.java
> > >
> > > 1. ------------------------------------------
> > > Database product name is DB2/6000
> > >
> > >
> > > 2. ------------------------------------------
> > > schema preferred term is schema
> > >
> > >
> > > schemas available
> > > A2TEST
> > > NULLID
> > > SQLJ
> > > SYSCAT
> > > SYSFUN
> > > SYSIBM
> > > SYSPROC
> > > SYSSTAT
> > > SYSTOOLS
> > >
> > > etc.
> > >
> > >         When I attempt to run my jackrabbit program, I get
> > >
> > > /home/milhri>java
-Djava.security.auth.login.config==/home/milhri/repotestdb/jaas.config
JCRDbTest > testdb
> > >
> > > init
>>>>>>>>>>>>org.apache.jackrabbit.core.config.ConfigurationException:
Replacement not found for ${wsp.name}.
> > > checkRootNode >>>>>>>>>>>>java.lang.NullPointerException
> > > createNamespace >>>>>>>>>>>>java.lang.NullPointerException
> > > addContent >>>>>>>>>>>>java.lang.NullPointerException
> > > browseContent >>>>>>>>>>>>java.lang.NullPointerException
> > > browseAll >>>>>>>>>>>>java.lang.NullPointerException
> > >
> > >
> > >         Any ideas why the ${wsp.name} is not found?
> > >
> > > Thanks.
> > >
> > >
> > >
> > > On Thu, Dec 15, 2005 at 09:42:28PM -0300, Edgar Poce wrote:
> > > > Hi rick,
> > > >
> > > >  you can take a look to
> > > >
http://incubator.apache.org/jackrabbit/apidocs/org/apache/jackrabbit/cor
e/state/db/SimpleDbPersistenceManager.html,
> > > > it contains documentation and examples that will help you to
configure your
> > > > jdbc connection.
> > > >
> > > > br,
> > > > edgar
> > > >
> > > > milhri@lidp.com wrote:
> > > > >First time mailer...
> > > > >
> > > > >I have successfully downloaded Apache Jackrabbit, and
> > > > >developed (from a variety of sources) a couple of working
> > > > >repositories.  Further, I haven't added anything to the
standard
> > > > >configuration.
> > > > >
> > > > >e.g.
> > > > >
> > > > >/home/milhri
> > > > >    JCRTest.java
> > > > >    repotest
> > > > >    JackTest.java
> > > > >    repotest2
> > > > >
> > > > >/home/milhri/repotest2
> > > > >    jaas.config
> > > > >    repository
> > > > >    repository.xml
> > > > >    versions
> > > > >    workspaces
> > > > >
> > > > >In both cases, I am using local flat files for persistent
storage.
> > > > >I need to demo persistent data storage in a database.
> > > > >
> > > > >Database server        = DB2/6000 8.2.1
> > > > >
> > > > >We currently use this database as persistent storage for a J2EE
> > > > >application.
> > > > >
> > > > >Can someone lend assistance getting a similar example program
to
> > > > >persist data in the database above?
> > > > >
> > > > >Thanks.
> > > > >
> > > >
> > >
> > > --
> > >                                             Sincerely,
> > >
> > >                                                Rick Milheron
> > >                                                FLMI,ACS
> > >                                                LIDP Consulting,
Inc.
> > >                                                Phone 630.829.7136
> > >                                                milhri@lidp.com
> > >                                                nihilum in
temperantia
> > >
> >
>
> --
>                                             Sincerely,
>
>                                                Rick Milheron
>                                                FLMI,ACS
>                                                LIDP Consulting, Inc.
>                                                Phone 630.829.7136
>                                                milhri@lidp.com
>                                                nihilum in temperantia
>



Re: Database persistent storage

Posted by Jukka Zitting <ju...@gmail.com>.
Hi,

On 1/20/06, Giota Karadimitriou <Gi...@eurodyn.com> wrote:
> I noted that the problem with ${wsp.home} and ${wsp.name}
>
> >org.apache.jackrabbit.core.config.ConfigurationException: Replacement
> > not found for ${wsp.home}
>
> appears only in the '<Versioning>' part of repository xml,
> while everything works fine in <Workspace> part of repository xml.

The ${wsp....} variables are only available in the workspace
configuration. The versioning configuration is repository global, so
you shouldn't try to associate it with any specific workspace.

See http://incubator.apache.org/jackrabbit/doc/config.html for more information.

BR,

Jukka Zitting

--
Yukatan - http://yukatan.fi/ - info@yukatan.fi
Software craftmanship, JCR consulting, and Java development