Edited at

【備忘録】eXist on Vagrant

More than 3 years have passed since last update.


実行環境


Vagrant プライベートIP付与

1.Vagrantfileの下記のコメントを削除する。


Vagrantfile

config.vm.network :private_network, ip: "192.168.33.11"


2.vagrant をリロードする。


console(Mac)

$ vagrant reload



eXist インストール


JDK 1.7 インストール


console(Vagrant)

$ sudo rpm -ivh [jdk-7u67-linux-x64.rpm](http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u67-oth-JPR)

$ java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)


eXist 本体 インストール


console(Vagrant)

$ sudo java -jar eXist-db-setup-2.1-rev18721.jar 

Select target path [/vagrant]
/usr/local/lib/exist
press 1 to continue, 2 to quit, 3 to redisplay
1
Set Data Directory
Please select a directory where eXist-db will keep its data files. On Windows, this should be outside the 'Program Files' directory. Please make sure eXist can write to the directory it is installed in.
Data dir: [webapp/WEB-INF/data]
[Enter]
press 1 to continue, 2 to quit, 3 to redisplay
1
Set Admin Password and Configure Memory
Enter password: []
secret
Enter password: [secret(いつものパスワード)]
secret

Maximum memory in mb: [1024]
[Enter]
Cache memory in mb: [128]
[Enter]
press 1 to continue, 2 to quit, 3 to redisplay
1
[ Starting to unpack ]
Starting process Setting admin password ... (1/1)
--- Starting embedded database instance ---
8 20, 2014 2:23:02 午前 org.expath.pkg.repo.util.Logger info
情報: Create a new repository with storage: File system storage in /usr/local/lib/webapp/WEB-INF/data/expathrepo
Setting admin user password...
--- Initialization complete. Shutdown embedded database instance ---
[ Console installation done ]
$



  • データディレクトリへのパスは/usr/local/lib/exist/webapp/WEB-INF/data/fs/db(DBルート)となる。


起動・終了


手動起動


console(Vagrant)

$ sudo /usr/local/lib/exist/bin/startup.sh

26 2 2015 08:23:57,497 [main] INFO (JettyStart.java [run]:117) - Configuring eXist from /usr/local/lib/exist/conf.xml
26 2 2015 08:23:57,514 [main] INFO (JettyStart.java [run]:119) - Running with Java 1.7.0_67 [Oracle Corporation (Java HotSpot(TM) 64-Bit Server VM) in /usr/java/jdk1.7.0_67/jre]
26 2 2015 08:23:57,515 [main] INFO (JettyStart.java [run]:125) - Running as user 'root'
26 2 2015 08:23:57,583 [main] INFO (JettyStart.java [run]:128) - [eXist Version : 2.1]
26 2 2015 08:23:57,583 [main] INFO (JettyStart.java [run]:130) - [eXist Build : 20130717]
26 2 2015 08:23:57,584 [main] INFO (JettyStart.java [run]:132) - [eXist Home : unknown]
26 2 2015 08:23:57,584 [main] INFO (JettyStart.java [run]:134) - [SVN Revision : 18721]
26 2 2015 08:23:57,584 [main] INFO (JettyStart.java [run]:137) - [Operating System : Linux 2.6.32-504.1.3.el6.x86_64 amd64]
26 2 2015 08:23:57,584 [main] INFO (JettyStart.java [run]:142) - [jetty.home : /usr/local/lib/exist/tools/jetty]
26 2 2015 08:23:57,584 [main] INFO (JettyStart.java [run]:144) - [log4j.configuration : file:/usr/local/lib/exist/log4j.xml]
2 26, 2015 8:24:00 午前 org.expath.pkg.repo.util.Logger info
情報: Create a new repository with storage: File system storage in /usr/local/lib/exist/webapp/WEB-INF/data/expathrepo
26 2 2015 08:24:02,984 [main] INFO (JettyStart.java [lifeCycleStarting]:404) - Jetty server starting...
26 2 2015 08:24:02,995 [main] INFO (Server.java [doStart]:270) - jetty-8.1.9.v20130131
Logging already initialized. Skipping...
26 2 2015 08:24:06,217 [main] INFO (NCSARequestLog.java [doStart]:649) - Opened /usr/local/lib/exist/tools/jetty/logs/2015_02_26.request.log
26 2 2015 08:24:06,226 [main] INFO (ScanningAppProvider.java [doStart]:113) - Deployment monitor /usr/local/lib/exist/tools/jetty/contexts at interval 10
26 2 2015 08:24:06,230 [main] INFO (ScanningAppProvider.java [doStart]:113) - Deployment monitor /usr/local/lib/exist/tools/jetty/webapps at interval 10
26 2 2015 08:24:06,235 [main] INFO (DeploymentManager.java [addApp]:132) - Deployable added: /usr/local/lib/exist/tools/jetty/webapps/portal
26 2 2015 08:24:06,362 [main] WARN (AbstractLifeCycle.java [setFailed]:204) - FAILED o.e.j.w.WebAppContext{/portal,file:/usr/local/lib/exist/tools/jetty/webapps/portal/},/usr/local/lib/exist/tools/jetty/webapps/portal: java.lang.IncompatibleClassChangeError: Implementing class
java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.eclipse.jetty.annotations.AnnotationConfiguration.createAnnotationParser(AnnotationConfiguration.java:154)
at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:105)
at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:466)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1245)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39)
at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)
at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494)
at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56)
at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609)
at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540)
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403)
at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555)
at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96)
at org.eclipse.jetty.server.Server.doStart(Server.java:280)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.exist.jetty.JettyStart.run(JettyStart.java:187)
at org.exist.jetty.JettyStart.main(JettyStart.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.exist.start.Main.invokeMain(Main.java:126)
at org.exist.start.Main.run(Main.java:448)
at org.exist.start.Main.main(Main.java:50)
26 2 2015 08:24:06,384 [main] WARN (DeploymentManager.java [requestAppGoal]:501) - Unable to reach node goal: started
java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.eclipse.jetty.annotations.AnnotationConfiguration.createAnnotationParser(AnnotationConfiguration.java:154)
at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:105)
at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:466)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1245)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39)
at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)
at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494)
at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56)
at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609)
at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540)
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403)
at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555)
at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96)
at org.eclipse.jetty.server.Server.doStart(Server.java:280)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.exist.jetty.JettyStart.run(JettyStart.java:187)
at org.exist.jetty.JettyStart.main(JettyStart.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.exist.start.Main.invokeMain(Main.java:126)
at org.exist.start.Main.run(Main.java:448)
at org.exist.start.Main.main(Main.java:50)
26 2 2015 08:24:06,390 [main] INFO (DeploymentManager.java [addApp]:132) - Deployable added: /usr/local/lib/exist/tools/jetty/webapps/homepage
26 2 2015 08:24:06,449 [main] WARN (AbstractLifeCycle.java [setFailed]:204) - FAILED o.e.j.w.WebAppContext{/homepage,file:/usr/local/lib/exist/tools/jetty/webapps/homepage/},/usr/local/lib/exist/tools/jetty/webapps/homepage: java.lang.IncompatibleClassChangeError: Implementing class
java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.eclipse.jetty.annotations.AnnotationConfiguration.createAnnotationParser(AnnotationConfiguration.java:154)
at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:105)
at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:466)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1245)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39)
at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)
at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494)
at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56)
at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609)
at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540)
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403)
at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555)
at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96)
at org.eclipse.jetty.server.Server.doStart(Server.java:280)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.exist.jetty.JettyStart.run(JettyStart.java:187)
at org.exist.jetty.JettyStart.main(JettyStart.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.exist.start.Main.invokeMain(Main.java:126)
at org.exist.start.Main.run(Main.java:448)
at org.exist.start.Main.main(Main.java:50)
26 2 2015 08:24:06,455 [main] WARN (DeploymentManager.java [requestAppGoal]:501) - Unable to reach node goal: started
java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.eclipse.jetty.annotations.AnnotationConfiguration.createAnnotationParser(AnnotationConfiguration.java:154)
at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:105)
at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:466)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1245)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39)
at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)
at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494)
at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56)
at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609)
at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540)
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403)
at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555)
at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96)
at org.eclipse.jetty.server.Server.doStart(Server.java:280)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.exist.jetty.JettyStart.run(JettyStart.java:187)
at org.exist.jetty.JettyStart.main(JettyStart.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.exist.start.Main.invokeMain(Main.java:126)
at org.exist.start.Main.run(Main.java:448)
at org.exist.start.Main.main(Main.java:50)
26 2 2015 08:24:06,489 [main] INFO (AbstractConnector.java [doStart]:338) - Started SelectChannelConnector@0.0.0.0:8080
26 2 2015 08:24:06,893 [main] INFO (SslContextFactory.java [doStart]:300) - Enabled Protocols [SSLv2Hello, SSLv3, TLSv1, TLSv1.1, TLSv1.2] of [SSLv2Hello, SSLv3, TLSv1, TLSv1.1, TLSv1.2]
26 2 2015 08:24:06,898 [main] INFO (AbstractConnector.java [doStart]:338) - Started SslSelectChannelConnector@0.0.0.0:8443
26 2 2015 08:24:06,898 [main] INFO (JettyStart.java [lifeCycleStarted]:410) - Jetty server started.
26 2 2015 08:24:06,899 [main] INFO (JettyStart.java [run]:224) - -----------------------------------------------------
26 2 2015 08:24:06,900 [main] INFO (JettyStart.java [run]:225) - Server has started on ports 8080 8443. Configured contexts:
26 2 2015 08:24:06,900 [main] INFO (JettyStart.java [run]:234) - '/exist'
26 2 2015 08:24:06,900 [main] INFO (JettyStart.java [run]:272) - -----------------------------------------------------



自動起動(サービス登録)


  • 手動起動すると、Ctrl+Cでストップしてしまうので、サービスとして実行する。


  • Advanced Installation Methodsを参考に設定する。


デーモンの登録

1.デーモンを登録する。


console(Vagrant)

$ sudo /usr/local/lib/exist/tools/wrapper/bin/exist.sh install

Detected RHEL or Fedora:
Installing the eXist-db Native XML Database daemon..

2.下記で再起動し、eXist-db Dashboardに接続する。


console(Vagrant)

$ sudo reboot 


3.chkconfigの一覧も確認する。


console(Vagrant)

$ sudo chkconfig eXist-db on

$ sudo chkconfig --list
:
eXist-db 0:off 1:off 2:on 3:on 4:on 5:on 6:off
:


alternative設定


  • 下記でサービスの起動・停止ができるようになる。


console(Vagrant)

$ sudo ln -s /usr/local/lib/exist/tools/wrapper/bin/exist.sh /etc/init.d/exist

$ sudo /etc/init.d/eXist-db start #サービス開始
$ sudo /etc/init.d/eXist-db stop #サービス終了
$ sudo service eXist-db start #サービス開始
$ sudo service eXist-db stop #サービス終了



バックアップ・リストア


コマンドベース

1.バックアップ


vagrant_terminal

[vagrant@localhost ~]$ cd /usr/local/lib/exist/bin

[vagrant@localhost bin]$ sudo bash backup.sh -d ./backup -u admin -p secret -b /db

-d = ディレクトリ

-u = ユーザー

-p = パスワード

-b = DB内容

2.リストア


vagrant_terminal

[vagrant@localhost ~]$ cd /usr/local/lib/exist/bin

[vagrant@localhost bin]$ sudo bash backup.sh -r backup/db/__contents__.xml -u admin -p secret


Java Admin Client



【Perl-CGI】XML-RPCでeXistを操作する


HTTPD(Apache)の設定

1.インストール


console(Vagrant)

$ sudo yum -y install httpd


2.サービス開始(手動)


console(Vagrant)

$ sudo service httpd start


3.自動起動設定


console(Vagrant)

$ sudo chkconfig httpd on



eXist コレクションにXMLを新規保存する。


XML-RPC (Perl)

※Perlを利用する場合のみ、設定する。


  • Perl(CGI)からXMLDBにアクセスできるようにするために、XML-RPCをインストールする。

1.HTTPD : CGIを実行できるように変更する。

2.RPC::XMLをCPAN経由でインストールする。


console(Vagrant)

$ sudo yum install expat-devel

$ sudo yum -y install cpan

3.CPANを実行し、RPC::XMLをインストールする。


console(Vagrant)

$ sudo perl -MCPAN -e shell

cpan[1]> install XML::Parser
cpan[2]> install RPC::XML
cpan[3]> quit

4.サンプル:XML-RPCでXMLをアップロードする。


test.pl

#!/usr/bin/perl

use utf8;
use strict;
use warnings;

use RPC::XML;
use RPC::XML::Client;

my $url = "http://admin:passwd\@localhost:8080/exist/xmlrpc";
print "connecting to $url...\n";

my $client = RPC::XML::Client->new($url);

#登録するXMLを作成
my $xml = << "XML_DOC";
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<title>日本語タイトル</title>
<details>日本語詳細</details>
</doc>
XML_DOC

#utf8エンコード実行
utf8::encode($xml);

#XMLドキュメントはRPC::XML::base64->new()でラップする
#/[コレクション名]/[ドキュメント名]で保存先を指定する
#最後の1は、上書きOK指定
my $req = RPC::XML::request->new("parse", RPC::XML::base64->new($xml), "/sample/test.xml", 1);
my $response = $client->send_request($req);
if($response->is_fault) {
die "An error occurred: " . $response->string . "\n";
}

print $response->value, "\n";



console(Vagrant)

$ sudo chmod 705 test.pl

$ perl test.pl
connecting to http://admin:passwd@localhost:8080/exist/xmlrpc...
1 OK!


参考文献


XPath 関連


XQuery(DB問合せ言語) 関連


サンプル:ドキュメントの新規作成


db/sample/save-new.xq

xquery version "3.0" encoding "UTF-8";

(:追加先:コレクション:)
let $collection := 'xmldb:exist:///db/sample'
(:追加先:ファイル名:)
let $file-name := 'save-new.xml'

(:追加:XML:)
let $my-doc :=
<data>
<id>123</id>
<message>Hello World!!</message>
</data>

(:追加先:保存を実行する:)
let $store-return-status :=
xmldb:store($collection, $file-name, $my-doc)
return
<message>
New Document Created {$store-return-status} at {$collection}/{$file-name}
</message>



結果


/db/sample/save-new.xml

<data>

<id>123</id>
<message>Hello World!!</message>
</data>


XForms関連


前提条件


  • コレクションを作成する:/db/sample