2014-12-03 195 views
3

我處於infinispan服務器實驗階段,並且在設置本地計算機上的無限集羣時遇到問題。 配置文件: 我通過使用udp堆棧和jdbc_ping發現更改jgroup堆棧的一部分來更改配置文件cluster.xml。無法訪問服務器上的JDBC_PING無法正常工作

<subsystem xmlns="urn:infinispan:server:jgroups:7.0" default-stack="${jboss.default.jgroups.stack:udp-jdbc}"> 
     <stack name="udp-jdbc"> 
      <transport type="UDP" socket-binding="jgroups-udp"> 
       <property name="ip_mcast">false</property> 
    </transport> 
      <protocol type="JDBC_PING"> 
       <property name="connection_url">jdbc:mysql://localhost/jgroups</property> 
       <property name="connection_username">root</property> 
       <property name="connection_password">root</property>    
       <property name="connection_driver">com.mysql.jdbc.Driver</property> 
    </protocol>     
      <protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/> 
      <protocol type="FD_ALL"/> 
      <protocol type="VERIFY_SUSPECT"/> 
      <protocol type="pbcast.NAKACK2"/> 
      <protocol type="UNICAST3"/> 
      <protocol type="pbcast.STABLE"/> 
      <protocol type="pbcast.GMS"/> 
      <protocol type="UFC"/> 
      <protocol type="MFC"/> 
      <protocol type="FRAG2"/> 
      <protocol type="RSVP"/> 
     </stack> 

我把MySQL驅動程序文件夾中獨立/部署,運行服務器,這裏是我有什麼作爲輸出

20:13:15,389 INFO [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015876: Starting deployment of "mysql-connector-java-5.1.34-bin.jar" (runtime-name: "mysql-connector-java-5.1.34-bin.jar") 
20:13:15,461 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.jgroups.channel.clustered: org.jboss.msc.service.StartException in service jboss.jgroups.channel.clustered: java.lang.IllegalArgumentException: JDBC Driver required for JDBC_PING protocol could not be loaded: 'com.mysql.jdbc.Driver' 
    at org.jboss.as.clustering.jgroups.subsystem.ChannelService.start(ChannelService.java:74) 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.2.Final.jar:1.2.2.Final] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.2.Final.jar:1.2.2.Final] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_25] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_25] 
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_25] 
Caused by: java.lang.IllegalArgumentException: JDBC Driver required for JDBC_PING protocol could not be loaded: 'com.mysql.jdbc.Driver' 
    at org.jgroups.protocols.JDBC_PING.loadDriver(JDBC_PING.java:267) 
    at org.jgroups.protocols.JDBC_PING.init(JDBC_PING.java:93) 
    at org.jgroups.stack.ProtocolStack.initProtocolStack(ProtocolStack.java:860) 
    at org.jgroups.stack.ProtocolStack.setup(ProtocolStack.java:481) 
    at org.jgroups.JChannel.init(JChannel.java:848) 
    at org.jgroups.JChannel.<init>(JChannel.java:159) 
    at org.jboss.as.clustering.jgroups.JChannelFactory.createChannel(JChannelFactory.java:87) 
    at org.jboss.as.clustering.jgroups.subsystem.ChannelService.start(ChannelService.java:69) 
    ... 5 more 

20:13:15,559 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-3) JBAS010404: Deploying non-JDBC-compliant driver class com.mysql.jdbc.Driver (version 5.1) 
20:13:15,561 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-3) JBAS010404: Deploying non-JDBC-compliant driver class com.mysql.fabric.jdbc.FabricMySQLDriver (version 5.1) 
20:13:15,563 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-7) JBAS010417: Started Driver service with driver-name = mysql-connector-java-5.1.34-bin.jar_com.mysql.jdbc.Driver_5_1 
20:13:15,564 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-5) JBAS010417: Started Driver service with driver-name = mysql-connector-java-5.1.34-bin.jar_com.mysql.fabric.jdbc.FabricMySQLDriver_5_1 
20:13:15,597 INFO [org.jboss.as.server] (ServerService Thread Pool -- 18) JBAS018559: Deployed "mysql-connector-java-5.1.34-bin.jar" (runtime-name : "mysql-connector-java-5.1.34-bin.jar") 
20:13:15,599 INFO [org.jboss.as.controller] (Controller Boot Thread) JBAS014774: Service status report 
JBAS014777: Services which failed to start:  service jboss.jgroups.channel.clustered: org.jboss.msc.service.StartException in service jboss.jgroups.channel.clustered: java.lang.IllegalArgumentException: JDBC Driver required for JDBC_PING protocol could not be loaded: 'com.mysql.jdbc.Driver' 

你可以從JBoss日誌,子系統的Infinispan看到:服務器:由於JDBC驅動程序未加載(由JDBC_PING所要求),jgroups無法啓動,但在此步驟之後,infinispan服務器成功部署了mysql jdbc驅動程序。在我使用數據源的條件下,這種相同的錯誤佔據了相同的位置。 有什麼辦法可以告訴infinispan:服務器:jgroups子系統在驅動程序加載之前或jndi命名創建之前啓動? 或任何解決方法,這將有助於

在此先感謝

+0

嘗試安裝一個JDBC驅動程序的核心模塊,https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6/html/Administration_and_Configuration_Guide/Install_a_JDBC_Driver_as_a_Core_Module1.html – 2014-12-03 20:37:39

+0

我嘗試的解決方案(創建數據源引用),但它不起作用。據我可以告訴從日誌文件問題是,這兩個創建過程並行由兩個獨立的線程運行,所以如果我很幸運,它會創建集羣:) – Xoke 2014-12-03 20:54:50

+0

我不是100%確定,但也許作爲全局模塊安裝。見http://www.mastertheboss.com/jboss-server/jboss-as-7/how-to-install-a-module-on-jboss-as-7 – 2014-12-03 23:47:17

回答

3

對於直接使用JDBC的使用,你需要允許JGroups的模塊加載JDBC驅動程序模塊。爲此,請將JDBC驅動程序jar安裝爲模塊,然後打開modules/system/layers/base/org/jgroups/main/module.xml,在依賴項部分添加您的JDBC驅動程序模塊。

對於使用EAGER緩存的數據源查找,我認爲目前無法確保數據源在JGroups嘗試使用它之前可用。服務引導順序由編程依賴性控制,但無法通過配置文件聲明依賴性,因此JGroups不會等待數據源。

+0

感謝您的建議,但它不起作用。我認爲模塊的事情是jboss/wildfly更像是Maven倉庫和創建編譯時依賴關係,而不是運行時依賴關係。 – Xoke 2014-12-04 08:32:05

+0

我不確定你的配置是否正確,但它使用Infinispan Server 7.0.2.Final在我身邊工作。 – 2014-12-05 01:19:23

+0

這裏是我的配置http://pastebin.com/ySczsSLD – Xoke 2014-12-06 10:02:54