2017-04-18 430 views
0

经过几天的错误,我希望任何人都可以帮助我。我想通过Hibernate(5.1)将一个cassandra(3.9)连接到Wildfly Swarm(10.1.0)。我遵循How to package Hibernate OGM applications for WildFly 10的指示,并将所有必需的模块添加到项目中。通过休眠连接Cassandra在蜻蜓

>>> Project repository on Github <<<

在那之后,我添加了所有必需的依赖到pom.xml中:

<packaging>war</packaging> 

<dependencies> 
    <!-- Java EE 7 dependency --> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-api</artifactId> 
     <version>7.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- WildFly Swarm Fractions --> 


    <dependency> 
     <groupId>org.hibernate.ogm</groupId> 
     <artifactId>hibernate-ogm-core</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.ogm</groupId> 
     <artifactId>hibernate-ogm-cassandra</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-search-orm</artifactId> 
    </dependency> 
</dependencies> 
<build> 
    <finalName>demo</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.wildfly.swarm</groupId> 
      <artifactId>wildfly-swarm-plugin</artifactId> 
      <version>${version.wildfly.swarm}</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>package</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

接下来,我添加了JBoss-deplyoment-structure.xml:

<jboss-deployment-structure> 
<deployment> 
    <dependencies> 
     <module name="org.hibernate.ogm" slot="5.1" services="export" /> 
     <module name="org.hibernate.ogm.cassandra" slot="5.1" services="export" /> 
    </dependencies> 
</deployment> 

最后但并非最不重要的,我添加了persistence.xml:

<persistence 
    xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
    version="2.0"> 

<persistence-unit name="cassandra_fhe_prd_pu" transaction-type="JTA"> 
    <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider> 

    <exclude-unlisted-classes>false</exclude-unlisted-classes> 

    <properties> 
     <property name="jboss.as.jpa.providerModule" value="org.hibernate:5.1"/> 

     <property name="hibernate.transaction.jta.platform" value="JBossTS" /> 

     <property name="hibernate.ogm.datastore.provider" value="cassandra_experimental"/> 


     <property name="hibernate.ogm.datastore.hosts" value="localhost"/> 
     <property name="hibernate.ogm.datastore.database" value="any"/> 
    </properties> 
</persistence-unit> 

每一个岗位我看了告诉我,这就是我所必须做的。但是,如果我开始以下消息应用程序显示:

ERROR [org.jboss.as.controller.management-operation] (main) WFLYCTL0013: Operation ("add") failed - address: (("deployment" => "demo.war")) - failure description: { 
    "WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.null"], 
    "WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"demo.war#cassandra_fhe_prd_pu\" is missing [jboss.naming.context.java.null]"] 
} 

==========================

全部输出:

2017-04-18 13:17:34,022 INFO [org.wildfly.swarm] (main) WFSWARM0013: Installed fraction:      JCA - STABLE   org.wildfly.swarm:jca:2017.4.0 
    2017-04-18 13:17:34,022 INFO [org.wildfly.swarm] (main) WFSWARM0013: Installed fraction:     Logging - STABLE   org.wildfly.swarm:logging:2017.4.0 
    2017-04-18 13:17:34,022 INFO [org.wildfly.swarm] (main) WFSWARM0013: Installed fraction:   Bean Validation - STABLE   org.wildfly.swarm:bean-validation:2017.4.0 
    2017-04-18 13:17:34,022 INFO [org.wildfly.swarm] (main) WFSWARM0013: Installed fraction:     JAX-RS - STABLE   org.wildfly.swarm:jaxrs:2017.4.0 
    2017-04-18 13:17:34,022 INFO [org.wildfly.swarm] (main) WFSWARM0013: Installed fraction:      JPA - STABLE   org.wildfly.swarm:jpa:2017.4.0 
    2017-04-18 13:17:34,022 INFO [org.wildfly.swarm] (main) WFSWARM0013: Installed fraction:  CDI Configuration - STABLE   org.wildfly.swarm:cdi-config:2017.4.0 
    2017-04-18 13:17:34,022 INFO [org.wildfly.swarm] (main) WFSWARM0013: Installed fraction:      CDI - STABLE   org.wildfly.swarm:cdi:2017.4.0 
    2017-04-18 13:17:34,022 INFO [org.wildfly.swarm] (main) WFSWARM0013: Installed fraction:    Datasources - STABLE   org.wildfly.swarm:datasources:2017.4.0 
    2017-04-18 13:17:34,022 INFO [org.wildfly.swarm] (main) WFSWARM0013: Installed fraction:    Transactions - STABLE   org.wildfly.swarm:transactions:2017.4.0 
    2017-04-18 13:17:34,022 INFO [org.wildfly.swarm] (main) WFSWARM0013: Installed fraction:     Undertow - STABLE   org.wildfly.swarm:undertow:2017.4.0 
    2017-04-18 13:17:40,410 WARN [org.wildfly.swarm.datasources] (main) WFSWARM1005: Not creating a default datasource due to lack of JDBC driver 
    2017-04-18 13:17:40,894 INFO [org.jboss.msc] (main) JBoss MSC version 1.2.6.Final 
    2017-04-18 13:17:40,957 INFO [org.jboss.as] (MSC service thread 1-6) WFLYSRV0049: WildFly Swarm 2017.4.0 (WildFly Core 2.2.1.Final) starting 
    2017-04-18 13:17:41,144 INFO [org.wildfly.swarm] (MSC service thread 1-6) WFSWARM0019: Install MSC service for command line args: [] 
    2017-04-18 13:17:50,956 WARN [org.jboss.as.txn] (ServerService Thread Pool -- 26) WFLYTX0013: Node identifier property is set to the default value. Please make sure it is unique. 
    2017-04-18 13:17:50,956 INFO [org.jboss.as.naming] (ServerService Thread Pool -- 28) WFLYNAM0001: Activating Naming Subsystem 
    2017-04-18 13:17:50,956 INFO [org.jboss.as.security] (ServerService Thread Pool -- 24) WFLYSEC0002: Activating Security Subsystem 
    2017-04-18 13:17:50,971 INFO [org.jboss.as.security] (MSC service thread 1-2) WFLYSEC0001: Current PicketBox version=4.9.6.Final 
    2017-04-18 13:17:50,971 INFO [org.wildfly.extension.io] (ServerService Thread Pool -- 18) WFLYIO001: Worker 'default' has auto-configured to 16 core threads with 128 task threads based on your 8 available processors 
    2017-04-18 13:17:51,002 INFO [org.jboss.as.connector] (MSC service thread 1-1) WFLYJCA0009: Starting JCA Subsystem (WildFly/IronJacamar 1.3.4.Final) 
    2017-04-18 13:17:51,018 INFO [org.jboss.as.naming] (MSC service thread 1-6) WFLYNAM0003: Starting Naming Service 
    2017-04-18 13:17:51,409 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0003: Undertow 1.4.11.Final starting 
    2017-04-18 13:17:51,424 INFO [org.xnio] (MSC service thread 1-8) XNIO version 3.4.3.Final 
    2017-04-18 13:17:51,424 INFO [org.xnio.nio] (MSC service thread 1-8) XNIO NIO Implementation Version 3.4.3.Final 
    2017-04-18 13:17:51,487 INFO [org.wildfly.extension.undertow] (MSC service thread 1-5) WFLYUT0012: Started server default-server. 
    2017-04-18 13:17:51,518 INFO [org.wildfly.extension.undertow] (MSC service thread 1-4) WFLYUT0006: Undertow HTTP listener default listening on [0:0:0:0:0:0:0:0]:8080 
    2017-04-18 13:17:52,624 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Swarm 2017.4.0 (WildFly Core 2.2.1.Final) started in 11761ms - Started 110 of 120 services (21 services are lazy, passive or on-demand) 
    2017-04-18 13:18:04,528 INFO [org.wildfly.swarm.runtime.deployer] (main) deploying demo.war 
    2017-04-18 13:18:04,544 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0027: Starting deployment of "demo.war" (runtime-name: "demo.war") 
    2017-04-18 13:18:20,191 INFO [org.jboss.as.jpa] (MSC service thread 1-7) WFLYJPA0002: Read persistence.xml for cassandra_fhe_prd_pu 
    2017-04-18 13:18:25,686 WARN [org.jboss.as.dependency.private] (MSC service thread 1-8) WFLYSRV0018: Deployment "deployment.demo.war" is using a private module ("org.jboss.ironjacamar.jdbcadapters:main") which may be changed or removed in future versions without notice. 
    2017-04-18 13:18:25,686 WARN [org.jboss.as.dependency.private] (MSC service thread 1-8) WFLYSRV0018: Deployment "deployment.demo.war" is using a private module ("org.jboss.jts:main") which may be changed or removed in future versions without notice. 
    2017-04-18 13:18:26,201 ERROR [org.jboss.as.controller.management-operation] (main) WFLYCTL0013: Operation ("add") failed - address: (("deployment" => "demo.war")) - failure description: { 
    "WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.null"], 
    "WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"demo.war#cassandra_fhe_prd_pu\" is missing [jboss.naming.context.java.null]"] 
    } 
    2017-04-18 13:18:26,201 ERROR [org.jboss.as.server] (main) WFLYSRV0021: Deploy of deployment "demo.war" was rolled back with the following failure message: 
    { 
    "WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.null"], 
    "WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"demo.war#cassandra_fhe_prd_pu\" is missing [jboss.naming.context.java.null]"] 
    } 
    2017-04-18 13:18:27,045 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0028: Stopped deployment demo.war (runtime-name: demo.war) in 838ms 
    2017-04-18 13:18:27,045 INFO [org.jboss.as.controller] (main) WFLYCTL0183: Service status report 
    WFLYCTL0184: New missing/unsatisfied dependencies: 
    service jboss.naming.context.java.null (missing) dependents: [service jboss.persistenceunit."demo.war#cassandra_fhe_prd_pu"] 
    service jboss.persistenceunit."demo.war#cassandra_fhe_prd_pu" (missing) dependents: [service jboss.deployment.unit."demo.war".POST_MODULE] 

    2017-04-18 13:18:27,045 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0008: Undertow HTTP listener default suspending 
    2017-04-18 13:18:27,045 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0007: Undertow HTTP listener default stopped, was bound to [0:0:0:0:0:0:0:0]:8080 
    2017-04-18 13:18:27,045 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0004: Undertow 1.4.11.Final stopping 
    2017-04-18 13:18:27,061 INFO [org.jboss.as] (MSC service thread 1-7) WFLYSRV0050: WildFly Swarm 2017.4.0 (WildFly Core 2.2.1.Final) stopped in 7ms 
    2017-04-18 13:18:27,076 INFO [org.jboss.weld.Bootstrap] (main) WELD-ENV-002001: Weld SE container internal shut down 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) java.lang.reflect.InvocationTargetException 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at java.lang.reflect.Method.invoke(Method.java:498) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at org.wildfly.swarm.bootstrap.MainInvoker.invoke(MainInvoker.java:39) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at org.wildfly.swarm.bootstrap.Main.run(Main.java:46) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at org.wildfly.swarm.bootstrap.Main.main(Main.java:37) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) Caused by: org.wildfly.swarm.container.DeploymentException: org.wildfly.swarm.container.DeploymentException: WFSWARM0004: Deployment failed: {"WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.null"],"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"demo.war#cassandra_fhe_prd_pu\" is missing [jboss.naming.context.java.null]"]} 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at org.wildfly.swarm.container.runtime.RuntimeDeployer.deploy(RuntimeDeployer.java:278) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at org.wildfly.swarm.container.runtime.RuntimeDeployer.deploy(RuntimeDeployer.java:94) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at org.wildfly.swarm.container.runtime.RuntimeDeployer$Proxy$_$$_WeldClientProxy.deploy(Unknown Source) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at org.wildfly.swarm.Swarm.deploy(Swarm.java:443) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at org.wildfly.swarm.Swarm.main(Swarm.java:611) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) ... 7 more 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) Caused by: org.wildfly.swarm.container.DeploymentException: WFSWARM0004: Deployment failed: {"WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.null"],"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"demo.war#cassandra_fhe_prd_pu\" is missing [jboss.naming.context.java.null]"]} 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at org.wildfly.swarm.container.runtime.RuntimeDeployer.deploy(RuntimeDeployer.java:273) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) ... 11 more 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) Exception in thread "main" java.lang.reflect.InvocationTargetException 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at java.lang.reflect.Method.invoke(Method.java:498) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at org.wildfly.swarm.bootstrap.MainInvoker.invoke(MainInvoker.java:39) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at org.wildfly.swarm.bootstrap.Main.run(Main.java:46) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) at org.wildfly.swarm.bootstrap.Main.main(Main.java:37) 
    2017-04-18 13:18:27,076 ERROR [stderr] (main) Caused by: org.wildfly.swarm.container.DeploymentException: org.wildfly.swarm.container.DeploymentException: WFSWARM0004: Deployment failed: {"WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.null"],"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"demo.war#cassandra_fhe_prd_pu\" is missing [jboss.naming.context.java.null]"]} 
    2017-04-18 13:18:27,092 ERROR [stderr] (main) at org.wildfly.swarm.container.runtime.RuntimeDeployer.deploy(RuntimeDeployer.java:278) 
    2017-04-18 13:18:27,092 ERROR [stderr] (main) at org.wildfly.swarm.container.runtime.RuntimeDeployer.deploy(RuntimeDeployer.java:94) 
    2017-04-18 13:18:27,092 ERROR [stderr] (main) at org.wildfly.swarm.container.runtime.RuntimeDeployer$Proxy$_$$_WeldClientProxy.deploy(Unknown Source) 
    2017-04-18 13:18:27,092 ERROR [stderr] (main) at org.wildfly.swarm.Swarm.deploy(Swarm.java:443) 
    2017-04-18 13:18:27,092 ERROR [stderr] (main) at org.wildfly.swarm.Swarm.main(Swarm.java:611) 
    2017-04-18 13:18:27,092 ERROR [stderr] (main) ... 7 more 
    2017-04-18 13:18:27,092 ERROR [stderr] (main) Caused by: org.wildfly.swarm.container.DeploymentException: WFSWARM0004: Deployment failed: {"WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.null"],"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"demo.war#cassandra_fhe_prd_pu\" is missing [jboss.naming.context.java.null]"]} 
    2017-04-18 13:18:27,092 ERROR [stderr] (main) at org.wildfly.swarm.container.runtime.RuntimeDeployer.deploy(RuntimeDeployer.java:273) 
    2017-04-18 13:18:27,092 ERROR [stderr] (main) ... 11 more 

    Process finished with exit code 1 

谁能告诉我我做错了什么?

编辑

评论后,我加入了Datastax JDBC包装如下:

项目stages.yml

swarm: 
    datasources: 
    data-sources: 
     CassandraDS: 
     driver-name: cassandra 
     connection-url: jdbc:cassandra://localhost:9160/system?version=3.9 
    jdbc-drivers: 
     cassandra: 
     driver-class-name: org.apache.cassandra2.cql.jdbc.CassandraDriver 
     xa-datasource-name: com.github.adejanovski.cassandra.jdbc.CassandraDataSource 
     driver-module-name: org.github.adejanovski.cassandra 

module.xml

<module xmlns="urn:jboss:module:1.3" name="org.github.adejanovski.cassandra"> 
    <resources> 
     <resource-root path="cassandra-jdbc-wrapper-3.1.0.jar"/> 
     <resource-root path="slf4j-jdk14-1.7.24.jar"/> 
    </resources> 

    <dependencies> 
     <module name="javax.api"/> 
     <module name="javax.transaction.api"/> 
     <module name="sun.jdk" export="true" > 
      <imports> 
       <include path="sun/misc/Unsafe" /> 
      </imports> 
     </module> 
    </dependencies> 
</module> 

jboss- deployment-structure.xml

<jboss-deployment-structure> 
    <deployment> 
     <dependencies> 
      <module name="org.hibernate.ogm" slot="5.1" services="export" /> 
      <module name="org.hibernate.ogm.cassandra" slot="5.1" services="export" /> 
      <module name="org.github.adejanovski.cassandra" slot="main" services="export" /> 
     </dependencies> 
    </deployment> 
</jboss-deployment-structure> 

和persistence.xml中

<persistence 
    xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
    version="2.0"> 

    <persistence-unit name="cassandra_fhe_prd_pu" transaction-type="JTA"> 
     <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider> 
     <jta-data-source>java:/CassandraDS</jta-data-source> 
     <exclude-unlisted-classes>false</exclude-unlisted-classes> 
     <properties> 
      <property name="jboss.as.jpa.providerModule" value="org.hibernate:5.1"/> 

      <property name="hibernate.transaction.jta.platform" value="JBossTS"/> 

      <property name="hibernate.ogm.datastore.provider" value="cassandra_experimental"/> 

      <property name="hibernate.ogm.datastore.hosts" value="localhost"/> 
      <property name="hibernate.ogm.datastore.database" value="fhe"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

现在,错误消息说:

WFLYCTL0013: Operation ("add") failed - address: ([ 
    ("subsystem" => "datasources"), 
    ("data-source" => "CassandraDS") 
]) - failure description: { 
    "WFLYCTL0412: Required services that are not installed:" => ["jboss.jdbc-driver.cassandra"], 
    "WFLYCTL0180: Services with missing/unavailable dependencies" => [ 
     "org.wildfly.data-source.CassandraDS is missing [jboss.jdbc-driver.cassandra]", 
     "jboss.driver-demander.java:jboss/datasources/CassandraDS is missing [jboss.jdbc-driver.cassandra]" 
    ] 
} 
+0

你检查了这个吗? https://developer.jboss.org/thread/274131?_sscc = t由于找不到cassandra的jdbc驱动程序,因此您似乎只缺少一些野蛮设置。 –

+0

是的,我有。我这样做了,但新的错误表示驱动程序模块丢失。 –

+0

好吧,这是一个开始;)你可以更新的问题,并把新的错误英寸 –

回答

0

现在我找到一个解决方案。我不知道它是否是最好的方法,但它的工作原理如下:

首先我添加没有swap jpa所需的分数。之后,我删除了cassandra-jdbc-wrapper。现在hibernate直接创建连接并保持实体。我唯一需要做的就是将实体类添加到持久性xml中。

将工作项目推送到存储库。我会和群体一起玩,希望找到更好的方式。