Configuring XI over JMS
Hi,
I would like to configure XI over JMS using Bea Weblogic's JMS support,
Can anybody suggest how do i go about doing it? I am new to XI.
Thanks,
vishnu
Hi,
The best place to start is the SAP online help documentation. Try these link for starters (you will see more links on the left navigation too).
http://help.sap.com/saphelp_nw04/helpdata/en/e8/01683c43e87845e10000000a11402f/frameset.htm
Another tip is that you can search SAP documentation directly from SDN in the search on the top left of the SDN site
I hope this helps,
Mike.
Similar Messages
-
Sending and receiving SOAP over JMS in XI
Hai All,
I am working on a scenario in which I have to send a SOAP message over JMS adapter to XI and receive again the SOAP message over the JMS adapter.
Here my questions are:
1.How can I configure the JMS adapter to get the SOAP messages into XI.
Thanks in Advance
SrikanthHi,
1. Get the WSDL of the soap message and send it as a payload to the JMS adapter including the SOAP envelope.
OR
2. You can create the structer of teh SOAP body and while sending it and receiving it you can use either XSLT or JAVA or ABAP mapping to add and remove the SOAP envelope. So you can send/receive them as a payload to the JMS adapter
Regards,
Prakash -
How to consume SOAP over JMS in OESB which is deployeed in Oracle 11g
Oracle 11g Supports only JAX-RPC for SOAP over JMS i.e no response queue configuration.
I have to consume same web service in Oracle ESB ,
Please let me know what configuration required in OESB's business service to consume .Hi Harshada,
Any good reasons to integrate Share point Jquery mobile application with SMP ?
because Share point web services can be consumed directly in the Jquery mobile applications.
Please look at the below examples to achieve it.
Sample Codes :
Read List Items using Sharepoint Web Services and jQuery | Robert Kuzma on SharePoint, HTML, CSS & JavaScript, …
Pro-Grammar: Calling the SharePoint 2010 GetListItems web services with Jquery
javascript - Getting list data from SharePoint 2010 site using Jquery - Stack Overflow
-Virinchy -
ClassCastException in my WS over JMS using JAX-RPC in WLS 10.3...
Hi,
I am developing a WS over JMS using JAX-RPC in WLS 10.3 (I tried both WLS 10.3.0 and 10.3.1). And when WLS is trying to marshal the response, it throws "ClassCastException":
ava.lang.ClassCastException: org.tmforum.mtop.nrf.xsd.com.v1.EquipmentHolderEnumType cannot be cast to java.lang.String
at com.bea.staxb.runtime.internal.StringTypeConverter.print(StringTypeConverter.java:45)
at com.bea.staxb.runtime.internal.SimpleContentBeanMarshaller.print(SimpleContentBeanMarshaller.java:52)
at com.bea.staxb.runtime.internal.RuntimeBindingProperty.getLexical(RuntimeBindingProperty.java:154)
at com.bea.staxb.runtime.internal.PushMarshalResult.writeCharData(PushMarshalResult.java:639)
at com.bea.staxb.runtime.internal.PushMarshalResult.visit(PushMarshalResult.java:413)
at com.bea.staxb.runtime.internal.SimpleContentRuntimeBindingType.accept(SimpleContentRuntimeBindingType.java:46)
at com.bea.staxb.runtime.internal.PushMarshalResult.writeContents(PushMarshalResult.java:195)
at com.bea.staxb.runtime.internal.PushMarshalResult.marshalType(PushMarshalResult.java:153)
at com.bea.staxb.runtime.internal.PushMarshalResult.visitProp(PushMarshalResult.java:631)
at com.bea.staxb.runtime.internal.PushMarshalResult.visit(PushMarshalResult.java:403)
at com.bea.staxb.runtime.internal.ByNameRuntimeBindingType.accept(ByNameRuntimeBindingType.java:89)
at com.bea.staxb.runtime.internal.PushMarshalResult.writeContents(PushMarshalResult.java:195)
at com.bea.staxb.runtime.internal.PushMarshalResult.marshalType(PushMarshalResult.java:153)
at com.bea.staxb.runtime.internal.PushMarshalResult.visitProp(PushMarshalResult.java:631)
at com.bea.staxb.runtime.internal.PushMarshalResult.visit(PushMarshalResult.java:403)
at com.bea.staxb.runtime.internal.ByNameRuntimeBindingType.accept(ByNameRuntimeBindingType.java:89)
at com.bea.staxb.runtime.internal.PushMarshalResult.writeContents(PushMarshalResult.java:195)
at com.bea.staxb.runtime.internal.PushMarshalResult.marshalType(PushMarshalResult.java:153)
at com.bea.staxb.runtime.internal.PushMarshalResult.visitProp(PushMarshalResult.java:631)
at com.bea.staxb.runtime.internal.PushMarshalResult.visit(PushMarshalResult.java:400)
at com.bea.staxb.runtime.internal.ByNameRuntimeBindingType.accept(ByNameRuntimeBindingType.java:89)
at com.bea.staxb.runtime.internal.PushMarshalResult.writeContents(PushMarshalResult.java:195)
at com.bea.staxb.runtime.internal.PushMarshalResult.marshalType(PushMarshalResult.java:153)
at com.bea.staxb.runtime.internal.PushMarshalResult.visitProp(PushMarshalResult.java:631)
at com.bea.staxb.runtime.internal.PushMarshalResult.visit(PushMarshalResult.java:403)
at com.bea.staxb.runtime.internal.ByNameRuntimeBindingType.accept(ByNameRuntimeBindingType.java:89)
at com.bea.staxb.runtime.internal.PushMarshalResult.writeContents(PushMarshalResult.java:195)
at com.bea.staxb.runtime.internal.PushMarshalResult.marshalType(PushMarshalResult.java:153)
at com.bea.staxb.runtime.internal.PushMarshalResult.visitProp(PushMarshalResult.java:631)
at com.bea.staxb.runtime.internal.PushMarshalResult.visit(PushMarshalResult.java:400)
at com.bea.staxb.runtime.internal.ByNameRuntimeBindingType.accept(ByNameRuntimeBindingType.java:89)
at com.bea.staxb.runtime.internal.PushMarshalResult.writeContents(PushMarshalResult.java:195)
at com.bea.staxb.runtime.internal.PushMarshalResult.marshalType(PushMarshalResult.java:153)
at com.bea.staxb.runtime.internal.PushMarshalResult.visitProp(PushMarshalResult.java:631)
at com.bea.staxb.runtime.internal.PushMarshalResult.visit(PushMarshalResult.java:403)
at com.bea.staxb.runtime.internal.ByNameRuntimeBindingType.accept(ByNameRuntimeBindingType.java:89)
at com.bea.staxb.runtime.internal.PushMarshalResult.writeContents(PushMarshalResult.java:195)
at com.bea.staxb.runtime.internal.PushMarshalResult.marshalType(PushMarshalResult.java:153)
at com.bea.staxb.runtime.internal.PushMarshalResult.visitProp(PushMarshalResult.java:631)
at com.bea.staxb.runtime.internal.PushMarshalResult.visit(PushMarshalResult.java:400)
at com.bea.staxb.runtime.internal.ByNameRuntimeBindingType.accept(ByNameRuntimeBindingType.java:89)
at com.bea.staxb.runtime.internal.PushMarshalResult.writeContents(PushMarshalResult.java:195)
at com.bea.staxb.runtime.internal.PushMarshalResult.marshalType(PushMarshalResult.java:153)
at com.bea.staxb.runtime.internal.PushMarshalResult.visitProp(PushMarshalResult.java:631)
at com.bea.staxb.runtime.internal.PushMarshalResult.visit(PushMarshalResult.java:403)
at com.bea.staxb.runtime.internal.ByNameRuntimeBindingType.accept(ByNameRuntimeBindingType.java:89)
at com.bea.staxb.runtime.internal.PushMarshalResult.writeContents(PushMarshalResult.java:195)
at com.bea.staxb.runtime.internal.PushMarshalResult.marshalType(PushMarshalResult.java:153)
at com.bea.staxb.runtime.internal.PushMarshalResult.visitProp(PushMarshalResult.java:631)
at com.bea.staxb.runtime.internal.PushMarshalResult.visit(PushMarshalResult.java:403)
at com.bea.staxb.runtime.internal.ByNameRuntimeBindingType.accept(ByNameRuntimeBindingType.java:89)
at com.bea.staxb.runtime.internal.PushMarshalResult.writeContents(PushMarshalResult.java:195)
at com.bea.staxb.runtime.internal.PushMarshalResult.marshalTopType(PushMarshalResult.java:96)
at com.bea.staxb.runtime.internal.MarshallerImpl.marshalBindingType(MarshallerImpl.java:302)
at com.bea.staxb.runtime.internal.MarshallerImpl.marshalElement(MarshallerImpl.java:383)
at weblogic.wsee.bind.runtime.internal.LiteralSerializerContext.marshalElement(LiteralSerializerContext.java:82)
at weblogic.wsee.bind.runtime.internal.BaseSerializerContext.internalSerializeElement(BaseSerializerContext.java:197)
at weblogic.wsee.bind.runtime.internal.BaseSerializerContext.serializeElement(BaseSerializerContext.java:128)
at weblogic.wsee.codec.soap11.SoapEncoder.encodePart(SoapEncoder.java:322)
at weblogic.wsee.codec.soap11.SoapEncoder.encodeReturn(SoapEncoder.java:228)
at weblogic.wsee.codec.soap11.SoapEncoder.encodeParts(SoapEncoder.java:215)
at weblogic.wsee.codec.soap11.SoapEncoder.encode(SoapEncoder.java:134)
at weblogic.wsee.codec.soap11.SoapCodec.encode(SoapCodec.java:134)
at weblogic.wsee.ws.dispatch.server.CodecHandler.encode(CodecHandler.java:104)
at weblogic.wsee.ws.dispatch.server.CodecHandler.handleResponse(CodecHandler.java:51)
at weblogic.wsee.handler.HandlerIterator.handleResponse(HandlerIterator.java:287)
at weblogic.wsee.handler.HandlerIterator.handleResponse(HandlerIterator.java:271)
at weblogic.wsee.ws.dispatch.server.ServerDispatcher.callHandleResponse(ServerDispatcher.java:341)
at weblogic.wsee.ws.dispatch.server.ServerDispatcher.dispatch(ServerDispatcher.java:189)
at weblogic.wsee.ws.WsSkel.invoke(WsSkel.java:80)
at weblogic.wsee.server.jms.JmsWebservicesMessageDispatcher.dispatchMessage(JmsWebservicesMessageDispatcher.java:175)
at weblogic.wsee.server.jms.JmsQueueListener.processMessage(JmsQueueListener.java:397)
at weblogic.wsee.server.jms.JmsQueueListener.onMessage(JmsQueueListener.java:392)
at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4585)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:4271)
at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3747)
at weblogic.jms.client.JMSSession.access$000(JMSSession.java:114)
at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5096)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
The "EquipmentHolderEnumType" is generated JAXB object (obviously it is not a String) from WSDL using WLS wsld generation. And here is how that Enum is defined in XSD:
<xsd:simpleType name="EquipmentHolderEnumType">
<xsd:annotation>
<xsd:documentation>
<p>Equipment holder type</p>
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="MINOR_EXT"/>
<xsd:enumeration value="rack"/>
<xsd:enumeration value="shelf"/>
<xsd:enumeration value="sub_shelf"/>
<xsd:enumeration value="slot"/>
<xsd:enumeration value="sub_slot"/>
<xsd:enumeration value="remote_unit"/>
<xsd:enumeration value="remote_slots"/>
</xsd:restriction>
</xsd:simpleType>
My question is why WLS is trying to cast the EnumType to String when marshalling it? How can I fix this exception?
Also, second question: my WS will take some time to get the response ready (1+ minute). I was using WLS console test client to test my WS. And the test client always got time out:
java.io.IOException: Request timed out
at weblogic.wsee.connection.transport.jms.JmsTransport.receive(JmsTransport.java:356)
at weblogic.testclient.WebServiceOperation.invokeJms(WebServiceOperation.java:463)
at weblogic.testclient.WebServiceOperation.addWeblogicHeadersAndInvoke(WebServiceOperation.java:382)
at weblogic.testclient.WebServiceOperation.invokeComplex(WebServiceOperation.java:305)
at weblogic.testclient.WebServiceOperation.invoke(WebServiceOperation.java:626)
How can I configure the WLS console test client so that I can increase teh timeout setting for the client?
Thank you very much!
JianHi, pls how did you solve your problem exatly? Because I have similar problem without solution.
I have WSDL contract like:
<xs:element name="duration">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="durationType">
<xs:attribute name="days" type="xs:int" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name="durationType">
<xs:restriction base="xs:string">
<xs:enumeration value="PERIODIC"/>
<xs:enumeration value="PERPETUAL"/>
<xs:enumeration value="CREDIT_DAYS"/>
</xs:restriction>
</xs:simpleType>
And client site generated by WLS ant task "generate-from-wsdl" with "JAXRPC" option and when I use calling of this client and exeption was appeared:
FaultString [com.company.DurationType] FaultActor [null] Detail [<detail><java:string>java.lang.ClassCastException: com.company.DurationType</java:string></detail>];
Note: all other messages are correct.
thx -
Any one has any experience in connecting MBean servers to Sun MQ. Specifically with Lingo framework...(http://lingo.codehaus.org/JMX+over+JMS).
Thanks,
-Uday.My understanding is that MBean servers are the containers within the manageable application (eg MQ broker/server VM) that house the manageable resources (ie JMX MBeans) that is exposed to management applications. These MBeans are what defines what can be managed/configured. If an application does not have an MBean Server in it or specific MBeans to do management, than JMX management applications cannot monitor it.
As of MQ 4.1, the MQ broker has JMX support ie it has an MBean Server that contains a bunch of MBeans for management.
So, I'm not sure what you mean by "connecting MBean Servers to Sun MQ". An MBean Server already exists within the MQ broker VM.
Management applications (written in JMX), can connect to the MBean server in MQ brokers (and therefore access the MBeans) via various connection protocols, the default (and only supported one for MQ) being RMI.
Lingo allows you to plug in a different connection protocol - one based on JMS, which is also implemented by Lingo. It does not look like you can use Lingo plus any other JMS provider - you need to use Lingo's JMS support. This is my understanding from high level browsing of Lingo's website.
Since MQ (like Lingo) is also a JMS provider, I think it is worthwhile to ask (for clarification):
- what version of MQ are you using ? (are you using an older version that does not have JMX support ?)
- any reason why you cannot use the default RMI protocol ?
- are you asking if one can use Lingo plus MQ as the JMS provider ?
- are you asking if one can connect to (ie manage/monitor) the MQ broker using Lingo and it's own JMS provider ?
Sorry for long winded reply - unless I'm missing something (apologies if this is the case), it looks a bit awkward to monitor/manage a JMS provider (ie MQ) that has built in JMX management (unless you're using an older version of MQ) using yet another JMS based connection protocol (ie Lingo).
I haven't tried it but from looking at Lingo documentation, I don't think you can use Lingo to monitor/manage a MQ broker because a special Lingo connector needs to be setup from within the MQ broker's MBean Server.
Once again - apologies if I've misunderstood anything - please fill me in if this is the case.
regards,
-isa -
Submit order using Webservice over JMS
Hi,
from the SDK samples(webservice sample) and from one of the reply from the forum:
The wlsmimehdrContent_Type JMS header must be set to the following value: text/xml; charset="UTF-8"
The URI JMS header must be set to the following value: /osm/wsapi
Want to test webservice over JMS using SOAP UI (that supports HermesJMS):
I have configured HermesJMS then configured SoapUI 4.0 by adding endpoint as JMS then selected webserive endpoint as JMS:osm_ws_request (long name) instead of "http://localhost:7001/osm/wsapi".
Now for JMS endpoint where to add webservice URI "/osm/wsapi" unable to figure out where to add URI (in SOAPUI or HermesJMS) which parameter need to set for webservice URI?
Regards,
RutvejHi,
Above query is resolved..
Cheers,
Rutvej -
How to configure a full JMS Sender Adapter Scenario
Hi guys,
I have to do a JMS -> PI (7.1) -> File scenario, I never used JMS Adapter, and I'd like to tell you what I have done, and what I think is missing.
First I went to the NetWeaver Administrator ->Configuration Management ->Infrastructure ->JMS Server Configuration-> Create ->JMS Queue.. and I created a new Queue from a Virtual Provider (SAP JMS Provider).
The first thing I didn't know how to configure it is which transport protocol I have to choose in the CC adapter (SonicMQ JMS Provider, WebSphere MQ, etc..)
But I also don't know is if there's something missing on the NWA, to create, modify, etc. I read this slide: (https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/a05b2347-01e7-2910-ceac-c45577e574e0) where was shown how to create a SAP standard queue, and I also read all the documentation from help.sap.com (all the JMS basics and explanation) but I still don't know how to fully configure the CC and how to trigger the messages.
Please, if you need further information I can give it.
Thanks in advance.
JuanHi,
did you try this blog from William?
/people/william.li/blog/2006/11/13/how-to-use-saps-webas-j2ees-jms-queue-in-exchange-infrastructure
Regards,
Michal Krawczyk -
Dynamic configuration bean in JMS Adapter
Hello Experts,
My scenario is JMS(Active MQ) to File.Its just Passthrough scenario and no mapping involved.
Filename will be coming in one of the JMS Property (say businessId) and I need to set this filename to file adapter.
I have refered the stefan's blog and used the Dynamic configuration bean module in sender JMS adapter.
getFilename key.1 write http://sap.com/xi/System/JMS DCJMSMessageProperty4
getFilename value.1 module.filename
setFilename key.1 read http://sap.com/xi/System/File FileName
setFilename value.1 module.filename
But required filename is not populated in the target File.Any other configuration is missing here?Hi Karthiga
Did you set the ASMA properties in both your sender JMS channel and receiver File channel?
For the JMS adapter, as shown below, you will need to enter the DCJMSMessageProperty4 into the table
Configuring the Sender JMS Adapter - Configuring the JMS Adapter in the Integration Directory/PCK - SAP Library
If you want to set additional JMS message attributes, select Specify Additional JMS Message Properties (Maximum of 10).
In the table, enter the names of the JMS message properties whose values are to be included in the message header of the PI message.
The technical names of the additional attributes are DCJMSMessageProperty0, DCJMSMessageProperty1, ..., DCJMSMessageProperty9.
For the File adapter, you need to check the ASMA FileName attribute.
Once you have this configured, in your message, you should be able to see that the value is in the DynamicConfiguration section of the SOAP header.
Rgds
Eng Swee -
How to get contents of Soap Over JMS web service's wsdl file
Hi,
Is there a way to get the soap over jms webservice's wsdl file in browser? if yes please provide me the details how to get it.
OR how can i get the contensts of WSDL file for soap over jms wsdl file.
thanks in advance.I have the same question ("Assuming I can generate a wsdl file, can I recreate the SOAP request message from the WSDL file automatically (that matches the original request, which is hand build by me?)")
Have you already found an answer to this? -
Error: Invalid configuration for the JMS adapter
Hi!
I'm doing a test with CEP to get messages from a JMS WebLogic queue but I'm getting the following error:
<BEA-2045010> <The application context "Teste" could not be initialized: org.springframework.beans.FatalBeanException: Error in initialization context lifecycle; nested exception is java.lang.IllegalArgumentException: Invalid configuration for the JMS adapter, you must Bean or specify a converter or a type of event.
Teste.context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xmlns:wlevs="http://www.bea.com/ns/wlevs/spring"
xmlns:jdbc="http://www.oracle.com/ns/ocep/jdbc"
xmlns:spatial="http://www.oracle.com/ns/ocep/spatial"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/osgi
http://www.springframework.org/schema/osgi/spring-osgi.xsd
http://www.bea.com/ns/wlevs/spring
http://www.bea.com/ns/wlevs/spring/spring-wlevs-v11_1_1_3.xsd
http://www.oracle.com/ns/ocep/jdbc
http://www.oracle.com/ns/ocep/jdbc/ocep-jdbc.xsd
http://www.oracle.com/ns/ocep/spatial
http://www.oracle.com/ns/ocep/spatial/ocep-spatial.xsd">
<wlevs:event-type-repository>
<wlevs:event-type type-name="Pet">
<wlevs:class>testewithprotobuf.MyPet$Pet</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>
<wlevs:adapter id="pet_messageAdapter" provider="jms-inbound">
<wlevs:listener ref="pet_inputChannel" />
<wlevs:instance-property name="converterBean"
ref="PetMessageConverter" />
</wlevs:adapter>
<wlevs:channel id="pet_inputChannel" event-type="Pet">
<wlevs:listener ref="pet_messageProcessor" />
</wlevs:channel>
<bean id="PetMessageConverter" class="testewithprotobuf.PetMessageConverter" />
<bean id="PetBean" class="testewithprotobuf.PetBean" />
<wlevs:processor id="pet_messageProcessor">
<wlevs:listener ref="pet_outputChannel" />
</wlevs:processor>
<wlevs:channel id="pet_outputChannel" event-type="Pet">
<wlevs:listener ref="PetBean" />
</wlevs:channel>
</beans>
My converter class:
import java.util.Collections;
import java.util.List;
import javax.jms.BytesMessage;
import javax.jms.JMSException;
import javax.jms.Message;
import testewithprotobuf.MyPet.Pet;
import com.bea.wlevs.adapters.jms.api.InboundMessageConverter;
import com.bea.wlevs.adapters.jms.api.MessageConverterException;
import com.google.protobuf.InvalidProtocolBufferException;
public class PetMessageConverter implements InboundMessageConverter {
@SuppressWarnings("rawtypes")
@Override
public List convert(Message message) throws MessageConverterException,
JMSException {
BytesMessage bytesMessage = (BytesMessage) message;
long bodyLen = bytesMessage.getBodyLength();
byte[] buffer = new byte[(int) bodyLen];
bytesMessage.readBytes(buffer);
try {
Pet pet = Pet.parseFrom(buffer);
return Collections.singletonList(pet);
} catch (InvalidProtocolBufferException e) {
throw new MessageConverterException(e);
Please, what's wrong?
Thanks!This error usually indicates that you have both event type and converter bean specified or neither specified. In your case, that doesn't appear to the case from looking at the spring file. Could you also paste the contents of your configuration file from META-INF/wlevs directory?
-
SOAP over JMS Sender Communication Channel - How to?
Hello folks,
I have an async. scenario in which a SOAP message is posted to a JMS queue, then SAP PI picks up the SOAP message, extracts the payload and maps it into an IDOC to SAP.
Couple of questions...
1. Does the JMS adapter supports SOAP over JMS?
2. Can I get the entire SOAP envelope in SAP PI (just like the "do no use SOAP envelope" function works in the SOAP adapter) ?
3. Is the above scenario possible? Given the fact that my scenario (i.e. ccBPM, mappings, etc..) is expecting a SOAP envelope as input?
Thanks,
RobOk, then I think I am on the right track, but still I cannot get this scenario to work.
JMS (SOAP)-> SAP PI(ccBPM) --> IDOC
I put SOAP messages on the sender queue, those messages dissapear from that queue, so I would expect that I can see them back in PI, but no trace is left behind in the monitoring area... It is like they've never been read from the input queue.
What is happenning with those messages? The definition of the SOAP envelope has been uploaded as an external definition and linked to a message interface in the repository.
JMS Communication channel checked but it is also fine.
Any clues where to look?
Thanks. -
I'm trying to call a SOAP over JMS Service form the BPEL process manager. For a simple example I use the Apache CXF example with Active MQ. The service has the following WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:jms="http://cxf.apache.org/transports/jms" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://cxf.apache.org/jms_greeter" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:x1="http://cxf.apache.org/jms_greeter/types" name="JMSGreeterService" targetNamespace="http://cxf.apache.org/jms_greeter">
<wsdl:types>
<schema targetNamespace="http://cxf.apache.org/jms_greeter/types" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<element name="sayHi">
<complexType/>
</element>
<element name="sayHiResponse">
<complexType>
<sequence>
<element name="responseType" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="greetMe">
<complexType>
<sequence>
<element name="requestType" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="greetMeResponse">
<complexType>
<sequence>
<element name="responseType" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="greetMeOneWay">
<complexType>
<sequence>
<element name="requestType" type="xsd:string"/>
</sequence>
</complexType>
</element>
</schema>
</wsdl:types>
<wsdl:message name="sayHiRequest">
<wsdl:part name="in" element="x1:sayHi"/>
</wsdl:message>
<wsdl:message name="sayHiResponse">
<wsdl:part name="out" element="x1:sayHiResponse"/>
</wsdl:message>
<wsdl:message name="greetMeRequest">
<wsdl:part name="in" element="x1:greetMe"/>
</wsdl:message>
<wsdl:message name="greetMeResponse">
<wsdl:part name="out" element="x1:greetMeResponse"/>
</wsdl:message>
<wsdl:message name="greetMeOneWayRequest">
<wsdl:part name="in" element="x1:greetMeOneWay"/>
</wsdl:message>
<wsdl:portType name="JMSGreeterPortType">
<wsdl:operation name="sayHi">
<wsdl:input name="sayHiRequest" message="tns:sayHiRequest"/>
<wsdl:output name="sayHiResponse" message="tns:sayHiResponse"/>
</wsdl:operation>
<wsdl:operation name="greetMe">
<wsdl:input name="greetMeRequest" message="tns:greetMeRequest"/>
<wsdl:output name="greetMeResponse" message="tns:greetMeResponse"/>
</wsdl:operation>
<wsdl:operation name="greetMeOneWay">
<wsdl:input name="greetMeOneWayRequest" message="tns:greetMeOneWayRequest"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="JMSGreeterPortBinding" type="tns:JMSGreeterPortType">
<soap:binding style="document" transport="http://cxf.apache.org/transports/jms"/>
<wsdl:operation name="greetMe">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="greetMeRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="greetMeResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="sayHi">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="sayHiRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="sayHiResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="greetMeOneWay">
<soap:operation style="document" soapaction=""/>
<wsdl:input name="greetMeOneWayRequest">
<soap:body use="literal"/>
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="JMSGreeterService">
<wsdl:port name="GreeterPort" binding="tns:JMSGreeterPortBinding">
<jms:address destinationStyle="queue" jndiConnectionFactoryName="ConnectionFactory" jndiDestinationName="dynamicQueues/test.cxf.jmstransport.queue">
<jms:JMSNamingProperty name="java.naming.factory.initial" value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
<jms:JMSNamingProperty name="java.naming.provider.url" value="tcp://localhost:61616"/>
</jms:address>
<jms:clientConfig useConduitIdSelector="false"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
When trying to call the service i get the follwing errror:
<messages>
<input>
<Invoke_2_greetMeOneWay_InputVariable>
<part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="in">
<greetMeOneWay xmlns="http://cxf.apache.org/jms_greeter/types">
<requestType>
sdfsdf!
</requestType>
</greetMeOneWay>
</part>
</Invoke_2_greetMeOneWay_InputVariable>
</input>
<fault>
<bindingFault xmlns="http://schemas.oracle.com/bpel/extension">
<part name="summary">
<summary>
Unable to find an available port
</summary>
</part>
</bindingFault>
</fault>
</messages>
When using a JMS Adapter Service i can access the queue without any problems.
Any ideas? Thanks!Above all, really thank you for your precious help.
I thought about resolving the problem with JMS because it was studied to resolve asynchronous message delivery, which is what I'm trying to achieve.
So, I think I'll try the second solution you indicated. Let's see if I understood:
1- my customer decides to send some messages he wants to send [to better understand, I'll call them SMS] through the interface I developed
2- a new JMS Message is created
3- a MDB wake up and performs the initial steps to connect throught native calls
4- new MDB wake up and, using the connection, send created SMS
5- another process use the connection to read the StatusInd and create a new JMS Message to describe the message status
My implementation doubt is that I must send a lot of SMS (around 4000 SMS in one action), so, in pass 4, should I create 4000 MDB instances? It should be a clean implementation, maybe this way I could use also correlation id/replyto headers in passage 5, but I would it waste many resources?
And, also, how can I implement the "native calls"? Is there a way to create a class that support this proprietary protocol?
And what about creating the connections with the server? Should I use java.net.socket?
Really thank you,
Andrea
P.S.
I'll look for implementing it using Arjuna+JBoss ;) -
SOAP Over JMS, Add parameters
Hi,
I am working on JMS scenario in PI.I was able to push and pull message from IBM MQ message Queue.
I need a solution on :-
1. When i push a message in JMS queue can i add additional parameters like Interface ID or unique ID to the
message?
2. Using JMS sender when i pull a message i need to pick from queue based on an ID and once an id is picked i donot pick up the same message from the queue again.
Do we have a adapter based seeting for the same? IS soap over JMS a work around on this?
Please suggest.
AnirbanThis link gives a good start for this - http://darwin-it.blogspot.com/2008/06/soap-over-jms.html
-
Two short Soap over JMS questions
Hello everybody,
ís it possible to call a SOAP Service over JMS with the Oracle BPEL Process Manager, when the SOAP Service uses a "non-Oracle" queue (e.g. Apache ActiveMQ)?
Is the schema for the namespace "http://www.oracle.com/technology/oracleas/wsdl/jms" or documentation for the elements <jms:address> and <jms:propertyValue> available somewhere?
Thank you for your time.Ok, then I think I am on the right track, but still I cannot get this scenario to work.
JMS (SOAP)-> SAP PI(ccBPM) --> IDOC
I put SOAP messages on the sender queue, those messages dissapear from that queue, so I would expect that I can see them back in PI, but no trace is left behind in the monitoring area... It is like they've never been read from the input queue.
What is happenning with those messages? The definition of the SOAP envelope has been uploaded as an external definition and linked to a message interface in the repository.
JMS Communication channel checked but it is also fine.
Any clues where to look?
Thanks. -
Error Generating WebService for SOAP over JMS
Hi,
I've been tring to create an addition web service thta takes two input and returns the sum. I was able to generate the WSDL using JDevelopers GUI tool for generating WSDL, but I notices that there was no transport layer, in thebinding that suppoerted SOAP, and the "create web service from WSDL" wizard also gave and error message:
oracle.jdeveloper.webservices.model.WebServiceException: The chosen WSDL contains no SOAP 1.1 bindings and is therefore unsuitable for generation of a JAX-RPC web service for WLS. Only SOAP 1.1 bindings are supported for generation of JAX-RPC web services for deployment to WLS.
This is the WSDL I created:
<?xml version="1.0" encoding="UTF-8" ?>
<definitions targetNamespace="http://www.example.org/addition"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://www.example.org/addition"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:jms="http://schemas.xmlsoap.org/wsdl/jms/"
xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/">
<types>
<xsd:schema targetNamespace="http://www.example.org/addition/types"
elementFormDefault="qualified"/>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:add="http://www.example.org/addition"
targetNamespace="http://www.example.org/addition"
elementFormDefault="qualified">
<xsd:element name="additionInput">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="a" type="xsd:int"/>
<xsd:element name="b" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="additionOutput">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="sum" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
<message name="AdditionInputMessage">
<part name="payload" element="tns:additionInput"/>
</message>
<message name="AdditionOutputMessage">
<part name="payload" element="tns:additionOutput"/>
</message>
<portType name="AdditionPortType">
<operation name="addition">
<input message="tns:AdditionInputMessage"/>
<output message="tns:AdditionOutputMessage"/>
</operation>
</portType>
<binding name="AdditionPortTypeJMSBinding" type="tns:AdditionPortType">
<jms:binding type="ObjectMessage"/>
<format:typeMapping encoding="Java" style="Java">
<format:typeMap typeName="tns:additionInput" formatType=""/>
<format:typeMap typeName="tns:additionOutput" formatType=""/>
</format:typeMapping>
<operation name="addition">
<input>
<jms:input parts="payload"/>
<jms:property name="payloadProperty" part="payload"/>
</input>
<output>
<jms:output parts="payload"/>
<jms:property name="payloadProperty" part="payload"/>
</output>
</operation>
</binding>
<service name="AdditionPortType">
<port name="AdditionPortTypePort" binding="tns:AdditionPortTypeJMSBinding"/>
</service>
</definitions>
Could someone please help me out? I've been struggling with this problem for two weeks and can't make any headway. It's really driving me nuts. I've looked all over the web, and while everyone agrees that SOAP over JMS is possible, no one sems to have a working solution. One example I was able to get hold of used ant for deployment, but the deploy task failed when I ran it. Please, please help me.Hi,
I've been tring to create an addition web service thta takes two input and returns the sum. I was able to generate the WSDL using JDevelopers GUI tool for generating WSDL, but I notices that there was no transport layer, in thebinding that suppoerted SOAP, and the "create web service from WSDL" wizard also gave and error message:
oracle.jdeveloper.webservices.model.WebServiceException: The chosen WSDL contains no SOAP 1.1 bindings and is therefore unsuitable for generation of a JAX-RPC web service for WLS. Only SOAP 1.1 bindings are supported for generation of JAX-RPC web services for deployment to WLS.
This is the WSDL I created:
<?xml version="1.0" encoding="UTF-8" ?>
<definitions targetNamespace="http://www.example.org/addition"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://www.example.org/addition"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:jms="http://schemas.xmlsoap.org/wsdl/jms/"
xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/">
<types>
<xsd:schema targetNamespace="http://www.example.org/addition/types"
elementFormDefault="qualified"/>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:add="http://www.example.org/addition"
targetNamespace="http://www.example.org/addition"
elementFormDefault="qualified">
<xsd:element name="additionInput">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="a" type="xsd:int"/>
<xsd:element name="b" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="additionOutput">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="sum" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
<message name="AdditionInputMessage">
<part name="payload" element="tns:additionInput"/>
</message>
<message name="AdditionOutputMessage">
<part name="payload" element="tns:additionOutput"/>
</message>
<portType name="AdditionPortType">
<operation name="addition">
<input message="tns:AdditionInputMessage"/>
<output message="tns:AdditionOutputMessage"/>
</operation>
</portType>
<binding name="AdditionPortTypeJMSBinding" type="tns:AdditionPortType">
<jms:binding type="ObjectMessage"/>
<format:typeMapping encoding="Java" style="Java">
<format:typeMap typeName="tns:additionInput" formatType=""/>
<format:typeMap typeName="tns:additionOutput" formatType=""/>
</format:typeMapping>
<operation name="addition">
<input>
<jms:input parts="payload"/>
<jms:property name="payloadProperty" part="payload"/>
</input>
<output>
<jms:output parts="payload"/>
<jms:property name="payloadProperty" part="payload"/>
</output>
</operation>
</binding>
<service name="AdditionPortType">
<port name="AdditionPortTypePort" binding="tns:AdditionPortTypeJMSBinding"/>
</service>
</definitions>
Could someone please help me out? I've been struggling with this problem for two weeks and can't make any headway. It's really driving me nuts. I've looked all over the web, and while everyone agrees that SOAP over JMS is possible, no one sems to have a working solution. One example I was able to get hold of used ant for deployment, but the deploy task failed when I ran it. Please, please help me.
Maybe you are looking for
-
How to delete the recorded file in imovie(ipad version)
I am try a lot of way to delete it but still can't do it. T____T
-
Hello.... I already loaded logic 9 on my laptop hard drive... I would to load all the samples and loops on an external drive... Do I need to reinstall from DVD's or can I drag and drop?
-
I have AppleTV directly connected to my Sony SRX TV. AppleTV states it supports 1080p, but the highest resolution option I have in AppleTV seetings is 720. The AppleTV is directly connected to the TV with a HDMI cable.
-
I just purchased a Nikon S6300 camera and when I import into iPhoto the photos don't show up in either photos or events only in recent imports. I have Snow Leopard on my MacMini.
-
Hi all, In first list i displayed sflight table details.i used this code.if i double click on carrid value i am getting corresponding spfli details in the next list. AT LINE-SELECTION. GET CURSOR FIELD fld VALUE val LENGTH len OFFSET off LINE li. s