📄 index.xtp
字号:
<document><header> <product>resin</product> <title>JMS services</title> <type>tutorial</type> <tutorial-startpage>services.php</tutorial-startpage></header><body><summary localtoc="3"/><s1 title="Files in this tutorial"><deftable><tr><td><viewfile-link file="WEB-INF/resin-web.xml"/></td> <td>resin-web.xml configuration</td></tr><tr><td><viewfile-link file="services.php"/></td> <td>PHP script acting as the web client</td></tr><tr><td><viewfile-link file="WEB-INF/classes/example/LogService.java"/></td> <td>Log service implementation</td></tr></deftable></s1><s1 title="Using JMS for WebServices"><p>Using JMS for WebServices is as easy as sending the body of a SOAP messageas a JMS message. (TODO: Actually remove SOAP envelope.) Below is a PHPscript using the Quercus JMS module that acts as the service client.</p><example language="php"><?php$service_queue = new JMSQueue("jms/ServiceQueue");if (! $service_queue) { exit("Unable to get service queue!");} $log_service = jndi_lookup("example/LogService");echo "<a href=\"\">Refresh</a><br/>\n";echo "Logged messages:<br/>\n";echo "<pre>\n";echo $log_service->getLog();echo "</pre>\n";$request = "<env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-enveloper\">" . "<env:Body>" . "<m:log xmlns:m=\"urn:log\">" . " <s>Hello, World</s>" . "</m:log>" . "</env:Body>" . "</env:Envelope>";if (! $service_queue->send($request)) { echo "Unable to send request\n";}?></example></s1><s1 title="Configuring JMS for WebServices"><p>In the configuration below, we create a JMS queue for service requests.The service provider is a JMS MessageListener (implemented by <code>com.caucho.jms.services.ServicesListener</code>) which servicesall requests sent as JMS <code>TextMessage</code>s on the <var>serviceQueue</var>. In this example, the actual service implementationis a logging service, shown below.</p><example language="xml"><web-app xmlns="http://caucho.com/ns/resin"> <servlet servlet-name="resin-php" servlet-class="com.caucho.quercus.servlet.QuercusServlet" /> <servlet-mapping url-pattern="*.php" servlet-name="resin-php" /> <system-property javax.xml.stream.XMLInputFactory="com.caucho.xml.stream.XMLInputFactoryImpl"/> <resource var="logService" jndi-name="example/LogService" type="example.LogService" /> <resource var="serviceQueue" jndi-name="jms/ServiceQueue" type="com.caucho.jms.memory.MemoryQueue"/> <resource var="jmsFactory" type="com.caucho.jms.ConnectionFactoryImpl" jndi-name="jms/ConnectionFactory"/> <resource type="com.caucho.jms.services.ServicesListener"> <init> <connection-factory>${jmsFactory}</connection-factory> <destination>${serviceQueue}</destination> <service>${logService}</service> </init> </resource></web-app></example></s1><s1 title="The LogService"><p>The actual service provided here is a logging service. Notethe @WebService and @WebMethod annotations.</p><example language="java">package example;import javax.jws.WebMethod;import javax.jws.WebService;@WebServicepublic class LogService { private int _sequenceNumber = 1; private StringBuilder _log = new StringBuilder(); @WebMethod public int log(String message) { _log.append(_sequenceNumber + ": " + message + "\n"); return _sequenceNumber++; } @WebMethod(exclude=true) public String getLog() { return _log.toString(); }}</example></s1></body></document>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -