Glassfish 上的 Hippo cms 和 mysql

Hippo cms and mysql on Glassfish

我在向 Glassfish 添加 mysql 数据库时遇到了一个大问题。我完成了此处 http://www.onehippo.org/library/deployment/configuring/configuring-hippo-7-for-mysql.html 的所有步骤。

当我使用

$ mvn clean install
$ mvn -P cargo.run

它看起来不错,因为在我的 workspace.xml 我有 :

<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
  <param name="url" value="java:comp/env/jdbc/repositoryDS"/>
  <param name="driver" value="javax.naming.InitialContext"/>
  <param name="schemaObjectPrefix" value="${wsp.name}_"/>
  <param name="schema" value="mysql"/>
</FileSystem>

接下来我使用

$ mvn clean install
$ mvn -P dist

并将创建的 cms.war 和 site.war 部署到 glassfish 服务器(之前,我复制了所有库并且一切正常。受 https://blogs.oracle.com/geertjan/entry/hippo_tip_deploying_hippo_to 启发)。所有项目工作正常。

问题出在数据库上。在 glassfish (/opt/glassfish4/glassfish/domains/domain1/applications/cms/WEB-INF/storage/workspaces/default/workspace.xml) 的新 workspace.xml 中,我有:

<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
  <param name="path" value="${wsp.home}"/>
</FileSystem>

<PersistenceManager   class="org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager">
  <param name="url" value="jdbc:h2:file:${wsp.home}/db"/>
  <param name="schemaObjectPrefix" value="${wsp.name}_"/>
  <param name="minBlobSize" value="4194304"/>
</PersistenceManager>

并且服务器在 storage/workspace/default 中创建了 db.h2.db 文件,但我需要在 mysql 中创建一个基础文件。我能做错什么吗?

补充问题。如何查看数据库中的内容?在 mysql 河马创造了这样的东西:

+--------------------+
| Tables_in_hippo    |
+--------------------+
| DATASTORE          |
| DEFAULT_BINVAL     |
| DEFAULT_BUNDLE     |
| DEFAULT_FSENTRY    |
| DEFAULT_NAMES      |
| DEFAULT_REFS       |
| REPOSITORY_FSENTRY |
| VERSION_BINVAL     |
| VERSION_BUNDLE     |    
| VERSION_FSENTRY    |
| VERSION_NAMES      |
| VERSION_REFS       |
+--------------------+

没有像 "Book" "Author" "Shop" 这样的表格。但是在服务器 Hippo 中有我可以编辑的所有这些数据。

感谢阅读。

您的 MySQL 配置似乎没问题。您必须记住,最重要的是 repository.xml 文件中的所有配置都需要正确。一旦存储库首次初始化,workspace.xml 就是 repository.xml 文件中的 generated/extracted。因此,如果您在 MySQL 的正确设置之前部署了 Hippo,您的目录中可能有一个旧的 workspace.xml,这会导致使用 H2 数据库。

您 link 的第一篇文章包含一个名为 "Make the repository use this configuration file" 的部分。如果您想使用自己的配置而不是利用 H2 数据库的内置配置,这一点非常重要。如果您不提供此系统 属性,将使用内置配置。

Additional question. How to check what is in the database? There are no tables like "Book" "Author" "Shop". But in server Hippo have all this data which I can edit.

Jackrabbit 中的持久化有点复杂,先阅读 configuration overview documentation and persistence manager documentation 是有意义的。内容和数据的持久性由处理内容节点和属性的持久性存储的 internal Jackrabbit 组件处理。 属性 值也存储在持久性管理器中,但大二进制值除外(通常存储在数据存储中)。