2014-12-28 4 views
0

Может кто-нибудь предложить мне, как настроить ConnectionFactory в мул с использованием ConnectionFactory-исх

Я пытаюсь настроить ConnectionFactory в мул с использованием ConnectionFactory-исх [это URL я следую :: : http://www.mulesoft.org/documentation-3.2/display/32X/JMS+Transport+Reference].Настройка JMS ConnectionFactory в мул

В вышеуказанной документации - упомянутый - Настройка ConnectionFactory

Одним из наиболее важных атрибутов ConnectionFactory-исх. Это ссылка на объект ConnectionFactory, который создает новые подключения для вашего JMS-провайдера. Объект должен реализовать интерфейс javax.jms.ConnectionFactory.

ConnectionFactory

Так реализовать указанное ниже мой мул XML настройке программы

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:smtps="http://www.mulesoft.org/schema/mule/smtps" 
xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" xmlns:https="http://www.mulesoft.org/schema/mule/https" 
xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:jms="http://www.mulesoft.org/schema/mule/jms" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.5.1" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/smtps http://www.mulesoft.org/schema/mule/smtps/current/mule-smtps.xsd 
http://www.mulesoft.org/schema/mule/https http://www.mulesoft.org/schema/mule/https/current/mule-https.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/current/mule-jms.xsd 
http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd"> 

<spring:bean name="connectionFactory" class="com.ers.connections.ConnectionFactoryImpl"/> 
<jms:activemq-connector name="Active_MQForApex" connectionFactory-ref="connectionFactory" validateConnections="true" doc:name="Active MQ"/> 
<flow name="apexwritequeueFlow1" doc:name="apexwritequeueFlow1"> 
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="niviTest" doc:name="HTTP"/> 
<logger message="Payload ::: #[payload]" level="INFO" doc:name="Logger"/>    
<jms:outbound-endpoint queue="ANS.RecOps.Incoming" connector-ref="Active_MQForApex" doc:name="JMS"/> 
</flow> 
</mule> 

Ниже класса Java

import javax.jms.Connection; 
import javax.jms.ConnectionFactory; 
import javax.jms.JMSException; 

import org.apache.activemq.ActiveMQConnectionFactory; 

public class ConnectionFactoryImpl implements javax.jms.ConnectionFactory { 

@Override 
public Connection createConnection() throws JMSException {  
// Create a ConnectionFactory 
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("21233", "123", "ssl://xxxx.autonet-yyy.com:443"); 
return connectionFactory.createConnection(); 
} 

@Override 
public Connection createConnection(String arg0, String arg1) 
throws JMSException { 
// TODO Auto-generated method stub 
return null; 
} 

} 



Однако я получаю эту ошибку

. Исключение корня: Неподдерживаемый тип ConnectionFactory: com.ers.connections.ConnectionFactoryImpl. Тип: класс java.lang.IllegalArgumentException ОШИБКА 2014-12-28 11: 53: 26,141 [main] org.mule.oduncher.application.DefaultMuleApplication: null java.lang.IllegalArgumentException: Неподдерживаемый тип ConnectionFactory: com.ers .connection.ConnectionFactoryImpl

Спасибо заранее. Любые предложения, наиболее ценные. Спасибо и считает Nivi

ответ

1

Если у вас нет каких-либо действительно хорошая причина, что вы не показываете в пост, чтобы написать свою собственную реализацию ConenctionFactory вы должны использовать один предоставленный провайдером JMS напрямую ,

Таким образом, вы должны использовать определение бина, как этот

<spring:bean id="connectionFactory" 
      class="org.apache.activemq.ActiveMQConnectionFactory"> 
    <property name="brokerURL" value="tcp://localhost:61616"/> 
</spring:bean> 
1

Вы используете разъем ActiveMQ и ожидает класс фабрики типа org.apache.activemq.ActiveMQConnectionFactory.Если вам действительно нужен собственный завод, ваш ConnectionFactoryImpl класс должен продлить ActiveMQ завод:

import org.apache.activemq.ActiveMQConnectionFactory; 

public class ConnectionFactoryImpl extends ActiveMQConnectionFactory { 

    // Override the methods you need 

} 

Затем вы можете ссылаться на него в ConnectionFactory-реф атрибута соединителя.

1

Вашей реализация, вероятно, не предусматривает какую-либо специальная функции, если это так, пожалуйста, просто использовать разъем по умолчанию:

<jms:activemq-connector name="JmsConnector" specification="1.1" /> 

Однако если у вас есть какое-то особое поведение, которое вы хотите использовать, с разъемом ActiveMQ , вам просто нужна фабрика соединений, которая реализует org.apache.activemq.ActiveMQConnectionFactory, это потому, что these two lines. Тогда просто использовать что-то вроде следующего:

<spring:beans> 
     <spring:bean name="myActiveMqConnectionFactory" 
       class="org.apache.activemq.spring.MyActiveMQConnectionFactory" 
       p:brokerURL="vm://esb-amq-broker" <--- Just some example property /> 
    </spring:beans> 

    <jms:activemq-connector name="myJmsConnector" 
          specification="1.1" 
          connectionFactory-ref="AmqConnectionFactory" 
          persistentDelivery="true" /> 

Однако, пожалуйста, моргание дважды о необходимости делать это, оригинальный разъем ActiveMQ, вероятно, обеспечивает почти все, что вам нужно с Exeption кэширования соединения. Если это то, что вам нужно, рассмотрите возможность использования this.

Смежные вопросы