2017-12-10 23 views
0

以下のコードは、実行時にWildfly 9.0.1で問題なくJMSキューを作成します。 Wildfly 10と11では、hornetq-serverがactivemqに置き換えられました。それをWildfly 10/11に正しく移行するには? ありがとうございます。 JMS-実装は、Apache ActiveMQのArtemis.The次の例にHornetQのから変更Wildfly 10でWildfly 10/11の実行時にプログラムによってjmsキューを追加するには?

private boolean createQueue(String operationName, String queueName) { 
    boolean result = false; 

     ModelControllerClient client = qService.getModelControllerClient();  
     if(client != null){ 
      ModelNode operation = new ModelNode(); 
      ModelNode address = operation.get(ClientConstants.OP_ADDR); 

      address.add("subsystem", "messaging"); 
      address.add("hornetq-server", "default"); 

      address.add("jms-queue", queueName); 

      ModelNode entries = operation.get("entries"); 
      entries.add("jms/queue/" + queueName); 
      operation.get(ClientConstants.OP).set(operationName); 

      try {     
       ModelNode returnVal = client.execute(operation); 
       return returnVal.get("outcome").asString().equalsIgnoreCase("success"); 

      } catch (Exception e) { 
       DLOG.error(ExceptionUtils.getStackTrace(e)); 
      } finally { 
       try { 
        client.close(); 
       } catch (IOException ex) { 
        DLOG.error(ExceptionUtils.getStackTrace(ex)); 
       } 
      } 
     }   
    return result; 
} 

答えて

0

はWildflyでテストされます。このようなキューを作成するためのコマンドを準備することができ

10:

public void createQueue() throws Exception { 
    ModelControllerClient client = ModelControllerClient.Factory.create(InetAddress.getByName("localhost"), 9990); 
    if (client != null) { 
     ModelNode op = new ModelNode(); 
     op.get(ClientConstants.OP_ADDR).add(ClientConstants.SUBSYSTEM, "messaging-activemq"); 
     op.get(ClientConstants.OP_ADDR).add(ClientConstants.SERVER, "default"); 
     op.get(ClientConstants.OP_ADDR).add("jms-queue", "HelloWorldQueue"); 
     op.get("entries").add("queue/HelloWorldQueue"); 
     op.get("entries").add("java:jboss/exported/queue/HelloWorldQueue"); 
     op.get(ClientConstants.OP).set("add"); 
     applyUpdate(op, client); 
    } 
} 

そして、この方法で操作を実行します。

private static void applyUpdate(ModelNode update, final ModelControllerClient client) throws IOException { 
    LOG.info("Execute: " + update.toString()); 
    ModelNode result = client.execute(new OperationBuilder(update).build()); 
    if (result.hasDefined("outcome") && "success".equals(result.get("outcome").asString())) { 
     if (result.hasDefined("result")) { 
      LOG.info(result.get("result").toString()); 
     } 
    } else if (result.hasDefined("failure-description")) { 
     throw new RuntimeException(result.get("failure-description").toString()); 
    } else { 
     throw new RuntimeException("Operation not successful; outcome = " + result.get("outcome")); 
    } 
} 

デプロイメント時にJMSリソースの自動作成を可能に注釈@JMSDestinationDefinitionsが同様に存在している2.0のJava EE 7では

<dependency> 
    <groupId>org.wildfly.core</groupId> 
    <artifactId>wildfly-controller-client</artifactId> 
    <version>3.0.10.Final</version> 
</dependency> 

とJMS:コードは、次のMavenの依存関係を持つWAR内で実行されます。いくつかのユースケースについては、これは既に十分に良いかもしれません。