📄 index.xtp
字号:
<document><header> <product>resin</product> <title>JMS Messaging in Quercus - Sending messages</title> <type>tutorial</type> <tutorial-startpage>send-message.php</tutorial-startpage></header><body><localtoc/><s1 title="Files in this tutorial"><deftable><tr> <th>File</th> <th>Description</th></tr><tr> <td><viewfile-link file="WEB-INF/resin-web.xml"/></td> <td>resin-web.xml configuration</td></tr><tr> <td><viewfile-link file="send-message.php"/></td> <td>PHP script sending the message.</td></tr><tr> <td><viewfile-link file="WEB-INF/classes/example/MyListener.java"/></td> <td>Java message bean listener receiving the message.</td></tr><tr> <td><viewfile-link file="WEB-INF/classes/example/MessageStoreService.java"/></td> <td>Singleton service bean storing the received messages.</td></tr><tr> <td><viewfile-link file="WEB-INF/classes/example/ViewLogServlet.java"/></td> <td>Servlet displaying the contents of the message store.</td></tr></deftable></s1><s1 title="Using JMS in Quercus"><p>Quercus offers a simplified messaging interface built upon JMS. This functionality makes it possible to send and receive messages using eitherthe Resin JMS implementation or any other messaging service with a JMSimplementation. Many features of JMS are designed for message-drivenservices which make sense in the Java world, but are not appropriate forPHP. This tutorial focuses on sending messages.</p></s1><s1 title="Sending JMS messages from a PHP script"><p>In this example, the script checks a POST variable "message" and ifit is set, sends the value of that variable to a JMS queue. A MessageDriven Bean (MDB) receives these messages and records them. The recordis displayed by a servlet.</p><example title="Example: PHP sending script"><?phpif (array_key_exists("message", $_POST)) { $queue = java_bean("Queue"); if (! $queue) { echo "Unable to get message queue!\n"; } else { if ($queue->offer($_POST["message"]) == TRUE) { echo "Successfully sent message '" . $_POST["message"] . "'"; } else { echo "Unable to send message '" . $_POST["message"] . "'"; } }}?></example><p>The programming model of the Quercus JMS interface is first toget access to the queue using the <code>java_bean()</code> call.<code>java_bean</code> will look for the named bean in theresin-web.xml, in this case our queue. Since the Queue implementsthe <code>java.util.concurrent.BlockingQueue</code> API, the PHP scriptcan send data to the queue directly using <code>offer()</code> andreceive messages with <code>poll()</code>.</p></s1><s1 title="Configuring JMS for PHP and Java"><p>JMS requires that two resources be set up: A<code>ConnectionFactory</code> and a <code>Queue</code>. Both areconfigured in <viewfile-link file="WEB-INF/resin-web.xml"/>.The <code>ConnectionFactory</code> is used to connect to all the<code>Queue</code>s and only one of them needs to be set up.</p><example title="Example: ConnectionFactory configuration in resin-web.xml"><web-app xmlns="http://caucho.com/ns/resin"> <jms-connection-factory uri="resin:"/></web-app></example><p>The example uses the queue named <code>Queue</code>.</p><example title="Example: Queue configuration in resin-web.xml"><web-app xmlns="http://caucho.com/ns/resin"> <jms-queue name="Queue" uri="memory:"/></web-app></example><p>The complete configuration is in <viewfile-link file="WEB-INF/resin-web.xml"/>.</p></s1></body></document>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -