XCMIS with Oracle

84 views
Skip to first unread message

JM Sentis

unread,
Dec 21, 2011, 7:00:35 AM12/21/11
to xcmis
Hello.

I searched without luck for any message about xcmis configuration with
oracle. Somebody have any expecience setting xcmis with oracle
(specially with bonita bpm)?

Regards.

Frédéric Bouquet

unread,
Dec 21, 2011, 8:23:00 AM12/21/11
to xc...@googlegroups.com
Hi,

In fact, you'll have to setup the Exo JCR to persist in Oracle db by editing the xmis-jcr-configuration.xml
There, for each workspace, you'll have to setup de JDBCWorspaceDataContainer as it : 

          <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
            <properties>
              <property name="source-name" value="jdbcxcmis" />
              <property name="dialect" value="oracle" />
              <property name="multi-db" value="false" />
              <property name="max-buffer-size" value="200k" />
              <property name="swap-directory" value="${exo.data.dir}/swap/system" />
            </properties>

Then, in your xCMIS configuration (exo-configuration-oracle) find the component RepositoryServiceConfiguration and set as conf-path the file you modified above.

You'll then have to modify at the end of the document the external component plugins as it for example : 

   <external-component-plugins>
      <target-component>org.exoplatform.services.naming.InitialContextInitializer</target-component>
      <component-plugin>
         <name>bind.datasource</name>
         <set-method>addPlugin</set-method>
         <type>org.exoplatform.services.naming.BindReferencePlugin</type>
         <init-params>
            <value-param>
               <name>bind-name</name>
               <value>jdbcxcmis</value>
            </value-param>
            <value-param>
               <name>class-name</name>
               <value>javax.sql.DataSource</value>
            </value-param>
            <value-param>
               <name>factory</name>
               <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
            </value-param>
            <properties-param>
               <name>ref-addresses</name>
               <description>ref-addresses</description>
              <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
              <property name="url" value="YOURJDBCURL"/>
              <property name="username" value="YOURUSERNAME"/>
              <property name="password" value="YOURPASSWORD"/>
            </properties-param>
         </init-params>
      </component-plugin>
   </external-component-plugins>

In bonita tomcat bundle, this files are located in the external/xcmis folder.

Hope it helps

Cheers

2011/12/21 JM Sentis <josepmar...@gmail.com>



--
Frédéric Bouquet
http://www.espacedefouille.org/

JM Sentis

unread,
Dec 22, 2011, 6:01:39 AM12/22/11
to xcmis
Hello.

I have to blame myself because i had not said my testing environment:

Solaris 10
Jboss Bonita 5.6 bundle
Oracle 10

Here xcmis config files are at:

*bonita_server/external/xcmis/ext-exo-conf/exo-configuration-
oracle.xml
*bonita_server/external/xcmis/ext-exo-conf/cmis-jcr-configuration-
oracle.xml

I have oracle jdbc jar (ojdbc14_g.jar) at: /jboss/server/default/lib

In cmis-jcr-configuration i have (i only changed the dialect property
to oracle):

<repository-service default-repository="db1">
<repositories>
<repository name="db1" system-workspace="system" default-
workspace="system">
<security-domain>exo-domain</security-domain>
<access-control>optional</access-control>
<session-max-age>5m</session-max-age>
<authentication-
policy>org.exoplatform.services.jcr.impl.core.access.JAASAuthenticator</
authentication-policy>
<workspaces>
<workspace name="system">
<!-- for system storage -->
<container
class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
<properties>
<property name="source-name" value="jdbcxcmis" />
<property name="dialect" value="oracle" />
<property name="multi-db" value="false" />
<property name="max-buffer-size" value="200k" />
<property name="swap-directory" value="${exo.data.dir}/
swap/system" />
</properties>
</container>
<initializer
class="org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer">
<properties>
<property name="root-nodetype" value="nt:unstructured" /
>
</properties>
</initializer>
<cache enabled="true"
class="org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl">
<properties>
<property name="max-size" value="10k" />
<property name="live-time" value="1h" />
</properties>
</cache>
<lock-manager>
<time-out>15m</time-out>
<persister
class="org.exoplatform.services.jcr.impl.core.lock.FileSystemLockPersister">
<properties>
<property name="path" value="${exo.data.dir}/lock/
system" />
</properties>
</persister>
</lock-manager>
</workspace>

<workspace name="cmis1">
<container
class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
<properties>
<property name="source-name" value="jdbcxcmis" />
<property name="dialect" value="oracle" />
<property name="multi-db" value="false" />
<property name="max-buffer-size" value="200k" />
<property name="swap-directory" value="${exo.data.dir}/
swap/cmis1" />
</properties>
</container>
<initializer
class="org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer">
<properties>
<property name="root-nodetype" value="nt:unstructured" /
>
</properties>
</initializer>
<cache enabled="true"
class="org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl">
<properties>
<property name="max-size" value="10k" />
<property name="live-time" value="1h" />
</properties>
</cache>
</workspace>
</workspaces>
</repository>
</repositories>
</repository-service>


In exo-configuration-oracle i have (i set my db properties):


<external-component-plugins>
<target-
component>org.exoplatform.services.naming.InitialContextInitializer</
<property name="url" value="jdbc:oracle:thin:@my_host:
1521:my_sid"/>
<property name="username"
value="oracle_user_granted_to_create"/>
<property name="password" value="my_pass_:P"/>
<property name="maxActive" value="10" />
<property name="maxIdle" value="5" />
<property name="initialSize" value="10" />
</properties-param>
</init-params>
</component-plugin>
</external-component-plugins>

I point bonita to the new xcmis conf via /jboss/bin/run.conf:

CMIS_CONFIG="-Dexo.data.dir=`dirname ${mycwd}`/external/xcmis/ext-exo-
data -Dorg.exoplatform.container.standalone.config=`dirname ${mycwd}`/
external/xcmis/ext-exo-conf/exo-configuration-oracle.xml"

But when i start bonita xcmis crashes, and i have no logging from
xcmis itself. Bonita server's.log error is (only about xcmis, bonita
is already working with oracle, creating tables etc.. ):

11-12-21 10:51:13,336 INFO [STDOUT] (main) 21.12.2011 10:51:13
*ERROR* [main] StandaloneContainerInitializedListener: Error of
StandaloneContainer initialization
(StandaloneContainerInitializedListener.java, line 120)
java.lang.RuntimeException: Cannot instantiate component
key=org.exoplatform.ecms.xcmis.sp.DriveCmisRegistry
type=org.exoplatform.ecms.xcmis.sp.DriveCmisRegistry found at vfszip:/
aplicacions/develop/bonita-5.6/server/default/deploy/xcmis.war/WEB-INF/
lib/exo-ecms-ext-xcmis-sp-2.1.4.1-bonita.jar/conf/portal/
configuration.xml
at
org.exoplatform.container.jmx.MX4JComponentAdapter.getComponentInstance(MX4JComponentAdapter.java:
131)
at
org.exoplatform.container.management.ManageableComponentAdapter.getComponentInstance(ManageableComponentAdapter.java:
68)
at
org.exoplatform.container.ConcurrentPicoContainer.getInstance(ConcurrentPicoContainer.java:
400)
at
org.exoplatform.container.ConcurrentPicoContainer.getComponentInstancesOfType(ConcurrentPicoContainer.java:
350)
at
org.exoplatform.container.CachingContainer.getComponentInstancesOfType(CachingContainer.java:
111)
at
org.picocontainer.defaults.LifecycleVisitor.visitContainer(LifecycleVisitor.java:
97)
at
org.exoplatform.container.ConcurrentPicoContainer.accept(ConcurrentPicoContainer.java:
517)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.picocontainer.defaults.AbstractPicoVisitor.traverse(AbstractPicoVisitor.java:
32)
at
org.picocontainer.defaults.LifecycleVisitor.traverse(LifecycleVisitor.java:
63)
at
org.picocontainer.defaults.LifecycleVisitor.start(LifecycleVisitor.java:
113)
at
org.exoplatform.container.ConcurrentPicoContainer.start(ConcurrentPicoContainer.java:
464)
at
org.exoplatform.container.ExoContainer.start(ExoContainer.java:186)
at
org.exoplatform.container.StandaloneContainer.getInstance(StandaloneContainer.java:
145)
at
org.exoplatform.container.StandaloneContainer.getInstance(StandaloneContainer.java:
107)
at
org.exoplatform.ws.frameworks.servlet.StandaloneContainerInitializedListener.contextInitialized(StandaloneContainerInitializedListener.java:
105)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:
3910)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:
4393)
at
org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:
310)
at
org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:
142)
at
org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:
461)
at
org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)
at org.jboss.web.deployers.WebModule.start(WebModule.java:97)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:
157)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:
264)
at
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
at
org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:
206)
at $Proxy38.start(Unknown Source)
at
org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:
42)
at
org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:
37)
at
org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:
62)
at
org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:
71)
at
org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:
51)
at
org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:
348)
at
org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:
286)
at
org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:
1631)
at
org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:
934)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:
1082)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:
984)
at
org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:
822)
at
org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:
553)
at
org.jboss.system.ServiceController.doChange(ServiceController.java:
688)
at
org.jboss.system.ServiceController.start(ServiceController.java:460)
at
org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:
163)
at
org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:
99)
at
org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:
46)
at
org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:
62)
at
org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:
50)
at
org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:
171)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:
1439)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:
1157)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:
1178)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:
1098)
at
org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:
348)
at
org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:
1631)
at
org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:
934)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:
1082)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:
984)
at
org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:
822)
at
org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:
553)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:
781)
at
org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:
702)
at
org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:
117)
at
org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:
70)
at
org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:
53)
at
org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:
361)
at
org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:
348)
at
org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:
1631)
at
org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:
934)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:
1082)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:
984)
at
org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:
822)
at
org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:
553)
at
org.jboss.system.server.profileservice.repository.AbstractProfileService.activateProfile(AbstractProfileService.java:
306)
at org.jboss.system.server.profileservic
2011-12-21 10:51:13,336 INFO [STDOUT] (main)
e.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:271)
at
org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:
461)
at org.jboss.Main.boot(Main.java:221)
at org.jboss.Main$1.run(Main.java:556)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.Exception: Cannot find a satisfying constructor
for class org.exoplatform.ecms.xcmis.sp.DriveCmisRegistry with
parameter interface org.exoplatform.services.jcr.RepositoryService
at
org.exoplatform.container.ExoContainer.createComponent(ExoContainer.java:
323)
at
org.exoplatform.container.jmx.MX4JComponentAdapter.getComponentInstance(MX4JComponentAdapter.java:
94)
... 87 more

Thanks for your time!

Regards.
> 2011/12/21 JM Sentis <josepmariasen...@gmail.com>

JM Sentis

unread,
Jan 2, 2012, 6:46:29 AM1/2/12
to xcmis
Hello!
Finally i got the solution, i set the absolute paths to cmis config
files in run.conf (very sad problem but...)
Regards!
> class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataCont ainer">
>             <properties>
>               <property name="source-name" value="jdbcxcmis" />
>               <property name="dialect" value="oracle" />
>               <property name="multi-db" value="false" />
>               <property name="max-buffer-size" value="200k" />
> class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataCont ainer">
>             <properties>
>               <property name="source-name" value="jdbcxcmis" />
>               <property name="dialect" value="oracle" />
>               <property name="multi-db" value="false" />
>               <property name="max-buffer-size" value="200k" />
> org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.jav a:
> 157)
>         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
>         at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
>         at
> org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:
> 264)
>         at
> org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
>         at
> org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:
> 206)
>         at $Proxy38.start(Unknown Source)
>         at
> org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(Star tStopLifecycleAction.java:
> 42)
>         at
> ...
>
> llegiu-ne més »
Reply all
Reply to author
Forward
0 new messages