求教hornetq下怎样不使用jndi直接js 创建对象jms对象

Tomcat 里 JNDI 方式配置的 DataSource 是所有 context 共享的吗?
JNDI 中的 DataSource 是所有 context 共享的一个 DataSource 实例吗?
可以是全局的,也可以是私有的。
server.xml中配置的,是公有的。
--- 共有 2 条评论 ---
回复 : 其实我想知道如果一个 Tomcat 下部署了两个 web 项目用 JDNI 的方式使用 tomcat 中在 conf/context.xml中配置的数据源,这个数据源会初始化几个实例ActiveMQ和JBOSS的HornetQ比较?
公司决定用HornetQ,也主要是因为公司的很多东西都是用的JBOSS的.
以前开发过一小段时间的ActiveMQ.了解也是浮云一般.
周末准备看看HornetQ,但很好奇和ActiveMQ的区别,或者说是性能等各方面两者的区别,差异.
如果有朋友知道希望能说说.
JBoss 内置
HornetQ 作为 JMS 引擎,没单独用过。
其实都一样了,都是JMS中间件.我用的ActiveMQ,Apache的软件质量也可信一些,文档也很全.两个的性能没测过.
--- 共有 1 条评论 ---
我上家公司就是采用的AvtiveMQ.服务器是WAS8.这家现在基本都是JBOSS的东西,汗
两个的更新速度不是一个档次啊...
日ActiveMQ 5.7.0,
而HornetQ如下:版本
2.1.2.Final
&实际上HQ的性能比AMQ好
AMQ在灵活性方面比HQ好&
求AMQ的详解文档
关于activemq的问题,向您请教&
我是从hornetq转到activemq的,倒不是因为h性能不如a,因为h没有一个web的管理端。
一上来就看到你到处发的文章,再发2篇成大牛了Hornetq 版本2.4.0final &需要JDK7及以上
step1.启动服务端
  1.1准备配置文件(配置说明参考官网手册)
  hornetq-configuration.xml
&configuration xmlns="urn:hornetq"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd"&
&broadcast-groups& &broadcast-group name="my-broadcast-group"&
&local-bind-address&192.168.0.215&/local-bind-address&
&local-bind-port&11212&/local-bind-port&
&group-address&255.255.255.0&/group-address&
&group-port&9876&/group-port&
&broadcast-period&2000&/broadcast-period& &/broadcast-group&
&/broadcast-groups&
&name&HornetQ.main.config&/name&
&bindings-directory&F:/hornetq/data/messaging/bindings&/bindings-directory&
&large-messages-directory&F:/hornetq/data/messaging/largemessages&/large-messages-directory&
&paging-directory&F:/hornetq/data/messaging/paging&/paging-directory&
&!--离线消息固化到文件--&
&journal-directory&F:/hornetq/journal&/journal-directory&
&journal-min-files&10&/journal-min-files&
&!-- 缓存大小 --&
&id-cache-size&9000&/id-cache-size&
&jmx-management-enabled&true&/jmx-management-enabled&
&!-- 消息计数器 --&
&message-counter-enabled&true&/message-counter-enabled&
&!-- keep history for a week --&
&message-counter-max-day-history&7&/message-counter-max-day-history&
&!-- sample the queues every minute (60000ms) --&
&message-counter-sample-period&60000&/message-counter-sample-period&
&persistence-enabled&true&/persistence-enabled&
&!-- 通知将从JMS话题 "notificationsTopic"上接收
&management-notification-address&jms.queue.notificationsQueue&/management-notification-address&
--&    &!--不配置这个的话会有一个安全警告--&
&cluster-user&HORNETQ.CLUSTER.ADMIN.USER&/cluster-user&
&cluster-password&test65525&/cluster-password&
&!-- Connectors --&
&connectors&
&connector name="connector-netty"&
&factory-class&org.hornetq.core.remoting.impl.netty.NettyConnectorFactory
&/factory-class&
&param key="use-nio" value="true" /&
&param key="host" value="localhost"/&
&param key="port" value="11212" /&
&/connector&
&!-- SSL connector --&
&connector name="netty-ssl-connector"&
&factory-class&org.hornetq.core.remoting.impl.netty.NettyConnectorFactory&/factory-class&
&param key="host" value="localhost"/&
&param key="port" value="5500"/&
&param key="ssl-enabled" value="true"/&
&param key="key-store-path" value="F:/ssl/keystore"/&
&param key="key-store-password" value="test"/&
&/connector&
&/connectors&
&!-- Acceptors --&
&acceptors&
&acceptor name="netty"&
&factory-class&org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory
&/factory-class&
&param key="use-nio" value="true" /&
&param key="host" value="0.0.0.0,127.0.0.1,localhost"&&/param&
&param key="port" value="11212" /&
&/acceptor&
&!-- SSL connector --&
&acceptor name="netty-ssl-acceptor"&
&factory-class&org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory&/factory-class&
&param key="host" value="localhost"/&
&param key="port" value="5500"/&
&param key="ssl-enabled" value="true"/&
&param key="key-store-path" value="F:/ssl/keystore"/&
&param key="key-store-password" value="test"/&
&param key="trust-store-path" value="F:/ssl/truststore"/&
&param key="trust-store-password" value="test"/&
&/acceptor&
&/acceptors&
&!-- Other config --&
&address-settings&
&address-setting match="jms.queue.#"&
&redelivery-delay&5000&/redelivery-delay&
&!-- 没有导致远程queue查找不到 --&
&expiry-address&jms.queue.expiryQueue&/expiry-address&
&!-- 没有导致远程queue查找不到 --&
&last-value-queue&true&/last-value-queue&
&max-size-bytes&100000&/max-size-bytes&
&page-size-bytes&20000&/page-size-bytes&
&redistribution-delay&0&/redistribution-delay&
&address-full-policy&PAGE&/address-full-policy&
&!-- 死信地址--&
&send-to-dla-on-no-route&true&/send-to-dla-on-no-route&
&dead-letter-address&jms.queue.deadLetterQueue&/dead-letter-address&
&max-delivery-attempts&3&/max-delivery-attempts&
&/address-setting&
&/address-settings&
&security-settings&
&!--security for example queue--&
&security-setting match="jms.queue.#"&
&permission type="createDurableQueue" roles="guest" /&
&permission type="deleteDurableQueue" roles="guest" /&
&permission type="createNonDurableQueue" roles="guest" /&
&permission type="deleteNonDurableQueue" roles="guest" /&
&permission type="consume" roles="guest" /&
&permission type="send" roles="guest" /&
&/security-setting&
&/security-settings&
&/configuration&
hornetq-jms.xml
&configuration xmlns="urn:hornetq"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd"&
&connection-factory name="ConnectionFactory"&
&connectors&
&!--对应hornetq-configuration.xml 里面的connectors--&
&connector-ref connector-name="connector-netty" /&
&/connectors&
&entry name="ConnectionFactory" /&
&entry name="/ConnectionFactory" /&
&entry name="XAConnectionFactory" /&
&entry name="/XAConnectionFactory" /&
&entry name="java:/ConnectionFactory"/&
&entry name="java:/XAConnectionFactory"/&
&/entries&
&retry-interval&1000&/retry-interval&
&retry-interval-multiplier&1.5&/retry-interval-multiplier&
&max-retry-interval&60000&/max-retry-interval&
&reconnect-attempts&1000&/reconnect-attempts&
&confirmation-window-size&1048576&/confirmation-window-size&
&/connection-factory&
&!--jms address--&
&queue name="notificationsQueue"&
&entry name="/queue/notificationsQueue"&&/entry&
&queue name="testQueue"&
&entry name="/queue/testQueue"/&
&selector string="color='red'"/&
&durable&true&/durable&
&!-- the dead letter queue where dead messages will be sent--&
&queue name="deadLetterQueue"&
&entry name="/queue/deadLetterQueue"/&
&/configuration&
&1.2 启动hornetq服务
public static void startHornetqServer(){
hornetq-configuration.xml
FileConfiguration config = new FileConfiguration();
config.start();
//HornetQServer
HornetQServer server=HornetQServers.newHornetQServer(config);
//JNPServer
StandaloneNamingServer standalone=new StandaloneNamingServer(server);
standalone.setBindAddress("0.0.0.0");
standalone.setRmiBindAddress("0.0.0.0");
standalone.start();
//JMSServer hornetq-jms.xml
jmsServer=new JMSServerManagerImpl(server);
jmsServer.start();
//start hornetq core server
server.start();
System.out.println(jmsServer.isStarted());
} catch (Exception e) {
e.printStackTrace();
step2.发送消息客户端
* @param args
public static void main(String[] args) {
Properties prop = new Properties();
prop.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
prop.setProperty("java.naming.provider.url", "jnp://127.0.0.1:1099");
prop.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
prop.setProperty(Context.SECURITY_PRINCIPAL,"guest");
prop.setProperty(Context.SECURITY_CREDENTIALS, "guest");
Context ctx = new InitialContext(prop);
System.out.println("+++++++1111ssssssss");
//查找目标地址
Destination destination = (Destination)ctx.lookup("/queue/notificationsQueue");
System.out.println("+++++++2222"+destination);
//根据上下文查找一个连接工厂 QueueConnectionFactory 。
//该连接工厂是由JMS提供的,不需我们自己创建,每个厂商都为它绑定了一个全局JNDI,我们通过它的全局JNDI便可获取它;
//ConnectionFactory 对应hornetq-jms.xml里面的 connection-factory name="ConnectionFactory"
ConnectionFactory factory = (ConnectionFactory)ctx.lookup("ConnectionFactory");
System.out.println("+++++++3333"+factory);
//从连接工厂得到一个连接 create QueueConnection
Connection
conn = factory.createConnection();
System.out.println("+++++++4444"+conn);
conn.start();
//通过连接来建立一个会话(Session);
javax.jms.Session session = conn.createSession(true,Session.AUTO_ACKNOWLEDGE);
//根据会话以及目标地址来建立消息生产者MessageProducer (QueueSender和TopicPublisher都扩展自MessageProducer接口)
MessageProducer producer = session.createProducer(destination);
TextMessage msg = session.createTextMessage("ffffffffffffffffffffffffffffffffffffffffffffff小心呈现出");
BytesMessage byteMessage=session.createBytesMessage();
byteMessage.writeBytes("testddddddddd".getBytes("utf-8"));
producer.send(msg);
producer.send(byteMessage);
System.out.println("send over !!!!!");
session.close();
conn.close();
System.out.println("send down===");
} catch (Exception e) {
e.printStackTrace();
step3.接受消息客户端
public MessageReceive(String ...destinationJNDI){
QueueConnectionFactory factory=(QueueConnectionFactory)getJNDIRemoteObj("ConnectionFactory");
if(factory==null)
connection = factory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
connection.start();
for (int i = 0; i & destinationJNDI. i++) {
destination = (Queue) getJNDIRemoteObj(destinationJNDI[i]);
if(destination==null)
producer = session.createConsumer(destination);
//接受消息
producer.setMessageListener(new ReceiveMessage());
} catch (JMSException e) {
e.printStackTrace();
public static Object getJNDIRemoteObj(String jndiName) {
Properties prop = new Properties();
prop.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
prop.setProperty("java.naming.provider.url", "jnp://127.0.0.1:1099");
prop.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
prop.setProperty(Context.SECURITY_PRINCIPAL,"guest");
prop.setProperty(Context.SECURITY_CREDENTIALS, "guest");
Context context = new InitialContext(prop);
return context.lookup(jndiName);
} catch (NamingException e) {
e.printStackTrace();
return null;
public class ReceiveMessage implements MessageListener {
@SuppressWarnings("deprecation")
public void onMessage(Message message) {
System.out.println("Received notification:"+new Date().toLocaleString());
Enumeration propertyNames = message.getPropertyNames();
while (propertyNames.hasMoreElements())
String propertyName = (String)propertyNames.nextElement();
System.err.format("
%s: %s\n", propertyName, message.getObjectProperty(propertyName));
HornetQDestination des=(HornetQDestination) message.getJMSDestination();
if(message instanceof TextMessage){
TextMessage mesg=(TextMessage)
System.out.println(des.getAddress()+"==received:"+mesg.getText());
if(message instanceof BytesMessage){
BytesMessage mesg=(BytesMessage)
ByteArrayOutputStream out=new ByteArrayOutputStream(((Long)mesg.getBodyLength()).intValue());
byte[] r=new byte[2048];
while((i=mesg.readBytes(r))!=-1)
out.write(r,0,i);
System.out.println(des.getClass()+"==received:"+new String(out.toByteArray(),"utf-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
out.close();
} catch (IOException e) {
e.printStackTrace();
if(message instanceof HornetQObjectMessage){
HornetQObjectMessage object=(HornetQObjectMessage)
Object msgObj=object.getObject();
if(msgObj instanceof ErrorMessageBO){
ErrorMessageBO messageBO=(ErrorMessageBO)msgO
String msg=messageBO.getMessageContent();
System.err.println("error:==&"+msg);
catch (JMSException e)
e.printStackTrace();
System.out.println("----------end--------------");
Views(...) Comments()

我要回帖

更多关于 js创建json对象 的文章

 

随机推荐