⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jms4.html

📁 j2eePDF格式的电子书
💻 HTML
📖 第 1 页 / 共 3 页
字号:
Client</div></td></tr>  <tr align="left">    <td><a name="wp79597"> </a><div class="pCellBody"><code class="cCode">JMSReplyTo</code></div></td>    <td><a name="wp79599"> </a><div class="pCellBody">Client</div></td></tr>  <tr align="left">    <td><a name="wp79602"> </a><div class="pCellBody"><code class="cCode">JMSType</code></div></td>    <td><a name="wp79604"> </a><div class="pCellBody">Client</div></td></tr>  <tr align="left">    <td><a name="wp79608"> </a><div class="pCellBody"><code class="cCode">JMSRedelivered</code></div></td>    <td><a name="wp79610"> </a><div class="pCellBody">JMS provider</div></td></tr></table></div><p class="pBody"></p><a name="wp79540"> </a><h4 class="pHeading3">Message Properties</h4><a name="wp79446"> </a><p class="pBody">You can create and set properties for messages if you need values in addition to those provided by the header fields. You can use properties to provide compatibility with other messaging systems, or you can use them to create message selectors (see <a  href="JMS4.html#wp79281">Message Selectors</a>). For an example of setting a property to be used as a message selector, see <a  href="JMSJ2EEex2.html#wp95588">A J2EE Application that Uses the JMS API with a Session Bean</a>.</p><a name="wp79459"> </a><p class="pBody">The JMS API provides some predefined property names that a provider may support. The use of either these predefined properties or user-defined properties is optional.</p><a name="wp79620"> </a><h4 class="pHeading3">Message Bodies</h4><a name="wp79621"> </a><p class="pBody">The JMS API defines five message body formats, also called message types, which allow you to send and to receive data in many different forms and provide compatibility with existing messaging formats. <a  href="JMS4.html#wp79628">Table 29-2</a> describes these message types.</p><div align="left"><table border="1" summary="JMS Message Types" id="wp79628">  <caption><a name="wp79628"> </a><div class="pTableTitle">Table 29-2   JMS Message Types</div></caption>  <tr align="center">    <th><a name="wp79632"> </a><div class="pCellHeading">Message Type</div></th>    <th><a name="wp79634"> </a><div class="pCellHeading">Body Contains</div></th></tr>  <tr align="left">    <td><a name="wp79637"> </a><div class="pCellBody"><code class="cCode">TextMessage</code></div></td>    <td><a name="wp79639"> </a><div class="pCellBody">A <code class="cCode">java.lang.String</code> object (for example, the contents of an Extensible Markup Language file).</div></td></tr>  <tr align="left">    <td><a name="wp79642"> </a><div class="pCellBody"><code class="cCode">MapMessage</code></div></td>    <td><a name="wp79644"> </a><div class="pCellBody">A set of name/value pairs, with names as <code class="cCode">String</code> objects and values as primitive types in the Java programming language. The entries can be accessed sequentially by enumerator or randomly by name. The order of the entries is undefined.</div></td></tr>  <tr align="left">    <td><a name="wp79647"> </a><div class="pCellBody"><code class="cCode">BytesMessage</code></div></td>    <td><a name="wp79649"> </a><div class="pCellBody">A stream of uninterpreted bytes. This message type is for literally encoding a body to match an existing message format.</div></td></tr>  <tr align="left">    <td><a name="wp79652"> </a><div class="pCellBody"><code class="cCode">StreamMessage</code></div></td>    <td><a name="wp79654"> </a><div class="pCellBody">A stream of primitive values in the Java programming language, filled and read sequentially.</div></td></tr>  <tr align="left">    <td><a name="wp79657"> </a><div class="pCellBody"><code class="cCode">ObjectMessage</code></div></td>    <td><a name="wp79659"> </a><div class="pCellBody">A <code class="cCode">Serializable</code> object in the Java programming language.</div></td></tr>  <tr align="left">    <td><a name="wp79662"> </a><div class="pCellBody"><code class="cCode">Message</code></div></td>    <td><a name="wp79664"> </a><div class="pCellBody">Nothing. Composed of header fields and properties only. This message type is useful when a message body is not required.</div></td></tr></table></div><p class="pBody"></p><a name="wp79665"> </a><p class="pBody">The JMS API provides methods for creating messages of each type and for filling in their contents. For example, to create and send a <code class="cCode">TextMessage</code>, you might use the following statements:</p><div class="pPreformattedRelative"><pre class="pPreformattedRelative">TextMessage message = session.createTextMessage();message.setText(msg_text);     // msg_text is a Stringproducer.send(message);<a name="wp79666"> </a></pre></div><a name="wp79669"> </a><p class="pBody">At the consuming end, a message arrives as a generic <code class="cCode">Message</code> object and must be cast to the appropriate message type. You can use one or more getter methods to extract the message contents. The following code fragment uses the <code class="cCode">getText</code> method:</p><div class="pPreformattedRelative"><pre class="pPreformattedRelative">Message m = consumer.receive(); if (m instanceof TextMessage) {&nbsp;&nbsp;TextMessage message = (TextMessage) m;&nbsp;&nbsp;System.out.println(&quot;Reading message: &quot; + message.getText());} else {&nbsp;&nbsp;// Handle error}<a name="wp79670"> </a></pre></div><a name="wp79679"> </a><h3 class="pHeading2">Exception Handling</h3><a name="wp79680"> </a><p class="pBody">The root class for exceptions thrown by JMS API methods is <code class="cCode">JMSException</code>. Catching <code class="cCode">JMSException</code> provides a generic way of handling all exceptions related to the JMS API. The <code class="cCode">JMSException</code> class includes the following subclasses, which are described in the API documentation:</p><div class="pSmartList1"><ul class="pSmartList1"><a name="wp79681"> </a><div class="pSmartList1"><li><code class="cCode">IllegalStateException</code> </li></div><a name="wp79682"> </a><div class="pSmartList1"><li><code class="cCode">InvalidClientIDException</code> </li></div><a name="wp79683"> </a><div class="pSmartList1"><li><code class="cCode">InvalidDestinationException</code> </li></div><a name="wp79684"> </a><div class="pSmartList1"><li><code class="cCode">InvalidSelectorException</code> </li></div><a name="wp79685"> </a><div class="pSmartList1"><li><code class="cCode">JMSSecurityException</code> </li></div><a name="wp79686"> </a><div class="pSmartList1"><li><code class="cCode">MessageEOFException</code> </li></div><a name="wp79687"> </a><div class="pSmartList1"><li><code class="cCode">MessageFormatException</code> </li></div><a name="wp79688"> </a><div class="pSmartList1"><li><code class="cCode">MessageNotReadableException</code> </li></div><a name="wp79689"> </a><div class="pSmartList1"><li><code class="cCode">MessageNotWriteableException</code> </li></div><a name="wp79690"> </a><div class="pSmartList1"><li><code class="cCode">ResourceAllocationException</code> </li></div><a name="wp79691"> </a><div class="pSmartList1"><li><code class="cCode">TransactionInProgressException</code> </li></div><a name="wp79692"> </a><div class="pSmartList1"><li><code class="cCode">TransactionRolledBackException</code></li></div></ul></div><a name="wp78877"> </a><p class="pBody">All the examples in the tutorial catch and handle <code class="cCode">JMSException</code> when it is appropriate to do so.</p>    </blockquote>   <img src="images/blueline.gif" width="550" height="8" ALIGN="BOTTOM" NATURALSIZEFLAG="3" ALT="Divider">    <table width="550" summary="layout" id="SummaryNotReq1">      <tr>	<td align="left" valign="center">	<font size="-1">	<a href="http://java.sun.com/j2ee/1.4/download.html#tutorial" target="_blank">Download</a>	<br>	<a href="http://java.sun.com/j2ee/1.4/docs/tutorial/information/faq.html" target="_blank">FAQ</a>	<br>	<a href="http://java.sun.com/j2ee/1.4/docs/tutorial/information/history.html" target="_blank">History</a>	</td>        <td align="center" valign="center"><a accesskey="p" href="JMS3.html"><img id="LongDescNotReq1" src="images/PrevArrow.gif" width="26" height="26" border="0" alt="Prev" /></a><a accesskey="c" href="J2EETutorialFront.html"><img id="LongDescNotReq1" src="images/UpArrow.gif" width="26" height="26" border="0" alt="Home" /></a><a accesskey="n" href="JMS5.html"><img id="LongDescNotReq3" src="images/NextArrow.gif" width="26" height="26" border="0" alt="Next" /></a><a accesskey="i" href="J2EETutorialIX.html"></a>        </td>	<td align="right" valign="center">	<font size="-1">	<a href="http://java.sun.com/j2ee/1.4/docs/api/index.html" target="_blank">API</a>	<br>	<a href="http://java.sun.com/j2ee/1.4/docs/tutorial/information/search.html" target="_blank">Search</a>	<br>	<a href="http://java.sun.com/j2ee/1.4/docs/tutorial/information/sendusmail.html" target="_blank">Feedback</a></font>	</font>	</td>      </tr>    </table>    <img src="images/blueline.gif" width="550" height="8" ALIGN="BOTTOM" NATURALSIZEFLAG="3" ALT="Divider"><p><font size="-1">All of the material in <em>The J2EE(TM) 1.4 Tutorial</em> is <a href="J2EETutorialFront2.html">copyright</a>-protected and may not be published in other workswithout express written permission from Sun Microsystems.</font>  </body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -