2006-01-26

Make Perl speak JMS (1)

To add JMS capability to Plum, I need to find a way to let Perl talk "JMS". Unfortunately there is no standard wire protocol for JMS. The JMS spec. defines the Java API but not the wire protocol. This is understandable as JMS is a Java centric system. Some JMS implementations, such as JBoss 3.x and 4.x, just use the Java serialization as their wire protocol. Others may use their propriate formats. This is an effort to define a generic XML protocol that can be utilized by different JMS implementations, but it is not there yet.

For now, a relatively simple way is to create a web service in Java which will route any requests to JMS server. Then one can make any lanaguage to speak JMS as long as they can consume the web service. Of course the limitation is that only text message will be supported.

Here is my try. I created a simple web service which is defined by following WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="MessageRouter"
targetNamespace="http://www.simple.code/router.wsdl/2005/11/7"
xmlns:wsdlns="http://www.simple.code/router.wsdl/2005/11/7"
xmlns:router="http://www.simple.code/router/2005/11/7"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:stk="http://schemas.microsoft.com/soap-toolkit/wsdl-extension"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">

<types>
<xsd:schema targetNamespace="http://www.simple.code/router/2005/11/7"
elementFormDefault="qualified">

<xsd:complexType name="DestinationType">
<xsd:sequence>
<xsd:element name="protocol" type="xsd:string"/>
<xsd:element name="category" type="xsd:string"/>
<xsd:element name="server" type="xsd:string"/>
<xsd:element name="port" type="xsd:long"/>
<xsd:element name="target" type="xsd:string"/>
<xsd:element name="user" type="xsd:string" minOccurs="0"/>
<xsd:element name="password" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="MessageHeadType">
<xsd:sequence>
<xsd:element name="header" type="xsd:string" maxOccurs="unbound"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="MessageBodyType">
<xsd:sequence>
<xsd:element name="content" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="RouteRequestType">
<xsd:sequence>
<xsd:element name="destination" type="router:DestinationType"/>
<xsd:element name="head" type="router:MessageHeadType" minOccurs="0"/>
<xsd:element name="request" type="router:MessageBodyType"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="RouteResponseType">
<xsd:sequence>
<xsd:element name="response" type="router:MessageBodyType"/>
</xsd:sequence>
</xsd:complexType>

<xsd:element name="RouteRequest" type="router:RouteRequestType"/>
<xsd:element name="RouteResponse" type="router:RouteResponseType"/>

</xsd:schema>
</types>

<message name="RouteRequest">
<part name="document" element="router:RouteRequest"/>
</message>

<message name="RouteResponse">
<part name="document" element="router:RouteResponse"/>
</message>

<portType name="MessageRouterPortType">
<operation name="RouteMessage">
<input message="wsdlns:RouteRequest" />
<output message="wsdlns:RouteResponse" />
</operation>
</portType>

<binding name="HttpBinding" type="wsdlns:MessageRouterPortType">
<stk:binding preferredEncoding="UTF-8" />
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="RouteMessage">
<soap:operation
soapAction="http://www.simple.code/router/action/RouteMessage"
style="document"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>

<service name="MessageRoutingService">
<port name="MessageRouterPort" binding="wsdlns:HttpBinding">
<soap:address
location="http://localhost:8080/common_router" />
</port>
</service>

</definitions>

1 comment:

Anonymous said...

BUENOS AIRES "Es una etapa que se termin贸". Directo, sin vueltas y con el coraz贸n. [url=http://www.zapatillaspumaferrari.com/]zapatillas pumas[/url] No solo porque estaba a 33 metros bajo tierra, sino por lo que significa el lugar. No me daba para sacar fotos, aunque algunas personas iban jorobando como si fuera un picnic. Una de las cosas m interesantes que vi fue una m Enigma original.
El proyecto irland茅s nacido bajo el nombre de Green Team ha servido de v铆a de acceso a empresas chinas en la Volvo Ocean Race. La relaci贸n entre ambos pa铆ses comenz贸 cuando el equipo encabezado por Ian Walker decidi贸 construir su Volvo Open 70 en el astillero McConaghy Boats de Zhuhai, en el Sur de China. Este hecho ins贸lito hasta ahora, unido a la llegada de la flota a Qingdao, no fue suficiente para los empresarios asi谩ticos, quienes decidieron financiar parte del sindicato de Walker.
"Estos primeros d铆as nos tomaron algunas mediciones, m谩s tests f铆sicos para ver c贸mo estamos y poder terminar de diagramar los 煤ltimos detalles", explica.. [url=http://www.zapatillaspumaferrari.com/]zapatillas puma[/url] lo que sali贸 (en algunos medios) con respecto a la pedida de mano (de Christian a G茅nesis) no es verdad. Nosotros no viajamos a Miami para conocer a la familia de G茅nesis, fuimos de vacaciones y coincidi贸 el verlos dijo Antonio Meier, alcalde del barrio limeo de San Isidro, a la agencia oficial Andina.
Banda Aceh: Un nio de Aceh tiene flores de papel proporcionadas por los japoneses de Kobe como parte del terremoto de 6 grados y el aniversario del tsunami en Banda Aceh, el 25 de diciembre de 2010. Alrededor de 3.000 flores de papel se colocan fuera de la mezquita Baiturrahman para conmemorar a las v铆ctimas del terremoto de 2004 y del tsunami. El 26 de diciembre de 2004, el tsunami destruy贸 m谩s de 800 kil贸metros (500 millas) de costa de Aceh, mat贸 a unas 168.000 personas en la provincia y destruyendo infraestructura y viviendas.
Cesc ya luce las nuevas botas Puma [url=http://www.zapatillaspumaferrari.com/]zapatillas pumas[/url]