Setting Outbound JMS Headers in ESB
Hi
I've been trying to set the JMSType header in an ESB process, using the following in my XSLT:
<xsl:variable name="JMSType"
select="ehdr:setOutboundHeader('/jhdr:JMSOutboundHeadersAndProperties/jhdr:JMSOutboundHeaders/jhdr:JMSType', 'solihull.cdh.citizen.change', 'jhdr=http://xmlns.oracle.com/pcbpel/adapter/jms/;')"/>
The message gets posted OK, but I have a 2nd ESB process listening specifically for this JMSType, but it does not get fired. If i remove the filter, then it does.
So, I can only assume that the JMSType is not getting set correctly.
Has anyone successfully managed this and does my call above look valid?
Any help appreciated
Chris
Hi,
Your code to set the header is ok, however, filtering is not that simple..
Please use the following code in the Filter expression in Inbound ESB adapter:
{ehdr:getRequestHeader('/jhdr:JMSInboundHeadersAndProperties/jhdr:JMSInboundHeaders/jhdr:JMSType') = 'COMPLETE_ORDER'};{ namespace ehdr=http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.headers.ESBHeaderFunctions namespace jhdr=http://xmlns.oracle.com/pcbpel/adapter/jms/ }
Regards,
Marek
Similar Messages
-
Hi,
I have a process that is initiated by an XML event. I have a client that constructs
and posts this XML message to a JMS queue. I am also setting some JMS headers
for that message such as correlation ID. The question is, how do I access these
values once the process is triggered? All that I am able to get at is the actual
XML itself.
--Krish.RTFM issue. Answered my own question.
"Krish Khambadkone" <[email protected]> wrote:
>
Hi,
I have a process that is initiated by an XML event. I have a client
that constructs
and posts this XML message to a JMS queue. I am also setting some JMS
headers
for that message such as correlation ID. The question is, how do I
access these
values once the process is triggered? All that I am able to get at is
the actual
XML itself.
--Krish. -
How to Set corrid using JMS adapter in ESB while inserting the data in JMS
Hello all,
Can any one help me in setting the corrid using JMS adapter in ESB.
I haven't been able to find any clues.
We can do this in BPEL but my adapter is in ESB and i have no idea how this can be done in ESB.
Your help is highly appreciated.
Thanks,
Saurav
Edited by: sauravsingla on Oct 7, 2009 10:46 AMhi
you could do this from and xsl transformatuion by use of the .. function
see :
http://biemond.blogspot.com/2008/02/esb-adapter-failover.html
http://kr.forums.oracle.com/forums/thread.jspa?threadID=658502 (comment of AmitSoaDev, he sets correlationid too)
hope this helps, gl -
Custom jms headers are removed when a message pass through OSB's proxyservi
Hi,
I am using OSB 10.3. Trying to build the application withe the following flow.
proxyservice(jms integration)-->businessservice(jms integration)-->MDB
When a jms message with some custom headers are posted to a proxyservice, the custom headers are getting strippped off and only the plain jms message is received in the MDB and not the custom jms headers. I have enabled "Get all headers" option to "Yes" on the proxyservice. Do I need to do anything special to get those jms properties on to a MDB?
Regards,
BaskaranDid you try passing headers with "Set Transport Headers for[ Outbound Request ] " with option Pass all Headers through Pipeline checked?
Thanks
Manoj -
Biztalk 2013 WCF-WebHTTP Adapter - Outbound HTTP Headers
Hi
I have a requirement to connect to a service using the WCF-WebHTTP adapter that requires authentication to be passed in the Headers.
A usercode and password is sent in the intial header and a security token is returned in the response header.
This security token is then used in the header of each subsequent call to the service.
I could not find anything in the documentation about getting and setting the "HTTP Header" data using maps or variables or using variables in the "Outbound HTTP Headers" on the adapter transport properties.
Any help on this would be gratefully received.
MalcolmYou can set the outbound HTTP header in WCF-WebHTTP adapter by 2 ways
1) At adapter level Change adapter properties
2)Changing Message context property at Orchestration or at pipeline
Its been well documented here
http://blog.codit.eu/post/2013/04/30/Using-HttpHeaders-with-WCF-WebHttp-Adapter-on-Biztalk-2013.aspx
Thanks
Abhishek -
Convert JMS Headers from EBCDIC to ASCII when using JMS Bridge (WLS - WMQ)
I have a Java app on Weblogic 11g using a Message Bridge to talk JMS with IBM Websphere MQ. The MQ server is running on IBM z/OS platform which uses EBCDIC encoding. I need to use the Weblogic message selector feature to filter messages on the bridge coming from Websphere MQ. But the JMS Headers of MSGs posted by WMQ are in EBCDIC format. How can I instruct MQ to convert the msg headers to ASCII before put on the bridge? Is there any flag on bindings config file? Or can I set some WMQ specific header before sending the msg on WLS side?
Thanks in advance.Hi,
Such option is not possible in weblogic but I think this property will help you with in MQ.
Property - Convert EBCDIC newline
Description - EBCDIC code pages contain a new line (NL) character that is not supported by the ASCII code pages (although some ISO variants of ASCII contain an equivalent). If messages are sent from a system that uses EBCDIC code pages (for example, a z/OS system) to a system that uses ASCII, you can control how the EBCDIC newline character is converted into ASCII format.
The default value is NL_TO_LF, which means that the EBCDIC NL character (X'15') is converted to the ASCII line feed character LF (X'0A') for all EBCDIC to ASCII conversions. To convert the EBCDIC NL character according to the conversion tables on your operating system, click TABLE. Note that the results of a TABLE conversion can vary from platform to platform and from language to language; even on the same platform the results might vary if you use different coded character set identifiers (CCSIDs). To convert ISO CCSIDs using the TABLE method and use the NL_TO_LF method for all other CCSIDs, click ISO.
Registry Stanza Key - ConvEBCDICNewline
Also, the MQSeries (not MQSC) adapter provides the data conversion property may handle this conversion as well.
Regards,
Kal -
Creating JMS Headers for executing IMS Transactions
Hi,
We have a requirement where we need to execute IMS Tran from PI. So we need to set the IMS Headers (MQIIH) on JMS Receiver channel. Also we need to set the some MQMD Header properties that JMS Receiver do not have like UserIdentifire, Format, etc.
I refered some of the documentation through which we were able to create the attributes in usr section. But that is not solving the purpose.
Thanks for your help in advance.
Thanks
SandeepHi Sandeep,
Do you have trouble with the IMS Headers or the MQMD? Can you post your configuration?
Here's a configuration I use for changing MQMD parameter in the receiver JMS channel:
In the advanced tab, additional parameters:
JMSMessageClass com.ibm.jms.JMSMessage
JMS.Message.method.setJMSCorrelationID java.lang.String 1
You can refer to this help page from IBM to know witch method to call: (setJMSCorrelationID)
http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=/com.ibm.mq.javadoc.doc/WMQJMSClasses/com/ibm/jms/JMSObjectMessage.html
You can achieve the same thing with the DynamicConfiguraitonBean in the module tab but you do not need both. They do the same thing.
If you want to use the DynamicConfigurationBean:
Module cfg:
AF_Modules/DynamicConfigurationBean LocalEnterpriseBean dc
Module params:
dc.key0 insert http://sap.com/xi/XI/System/JMS DCJMSCorreleationID
dc.value0 1
reference: https://cw.sdn.sap.com/cw/docs/DOC-10784
Those two configurations will do the same thing, hardcode the CorrellationID of the message to 1.
Martin -
JMS Adapter - Set Additional JMS Parameters or Replace Default Settings
Hi colleagues,
We are using PI/XI 7.0 (SP 12).
In trying to set up a Communication Channel using JMS Adapter to connect to Oracle AQ, I do not see the checkbox "Set Additional JMS Parameters or Replace Default Settings" , nor is the table for the parameters / value visible.
We have deployed the driver file as described in the How-to- guide: How To Install and Configure External Drivers for JDBC & JMS Adapters
[http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/f04ce027-934d-2a10-5a8f-fa0b1ed4d88f?quicklink=index&overridelayout=true]
In setting up the Communication Channel so far:
Type: Sender
Transport Protocol: Access JMS Provider Generically
Message Protocol: JMS 1.x
Adapter Engine: Integration Server
After this I expect to see the checkbox "Set Additional JMS Parameters or Replace Default Settings", but it is not there.
Therefore I am not able to select it in order to enter parameters like:
JMS.QueueConnectionFactoryImpl.classname
JMS.QueueConnectionFactoryImpl.method.setHostName
JMS.QueueImpl.classname
JMS.QueueImpl.constructor.... etc
Can someone please share if this because we are on too low SP or do we need to do something additional before it becomes visible? Is this a feature that only became available as of PI/XI 7.0 SP 13 or 14 ?
I checked both Sender and Receiver channel type, and it does not appear for both.
Thanks & Cheers,
JodieHi experts,
We are using PI 7.1 and I've set up a communication Channel using JMS Adapter to send
messages to a Sonic MQ queue.
I need to send some values as JMS parameters, two of which are constants and two are values
from the Sender message. I tried defining and setting up the parameters with constants values
in the Communication Channel under the Advanced tab by selecting the check-box
set Adapter-specific Message Attributes as follows:
Name TYPE
ContentType String
ReturnValue boolean
Name VAlue
Contenttype CompanyCode
ReturnValute true
This however lead to an error in the Adapter Engine (RWB).
My problem is:
1. Can anyone please instruct me as to how to go about defining and setting up
additional JMS parameters?
2. How to go about defining/setting up variables that will get their values from
the sender message?
Thanks & Cheers,
Joe -
How to handle german characters in case of Outbound JMS interface
HI all,
I am doing an interface which is an outbound JMS interface where the message from MQ and uploading it to a file server. The message contains german characters, JMS adapter while converting the message from binary format to XI message format is not able to handle that. So where can we have the option to change the encoding type.Hi RamaKiran,
chk out his link
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/405a83e3-0132-2a10-d3ad-a94a604a0469
/people/thomas.jung3/blog/2004/07/13/bsp-150-a-developer146s-journal-part-vii--dealing-with-multiple-languages-english-german-spanish-thai-and-polish
http://help.sap.com/saphelp_nw04/helpdata/en/7d/49ae0771924cf4a1fc7e2af7b2e18c/frameset.htm
Regards
Sampath -
How to access JMS headers in a WLI workflow
I'm posting XML messages using JMS to the WLI EventQueue
I would like to access the JMS headers so that I can used
the JMSReplyTo field to specify the queue where I wish WLI
to post the result to.
Is there anyway in WLI I can acccess the JMS headers?Robert,
To amplify Giora's response, tn the workflow Start Node that
is trigged by receipt of your message, store the reply to
queue in a workflow variable as such:
EventAttribute("JMSReplyTo")
Giora Katz-Lichtenstein wrote:
Hi Robert.
You surely can do so if you look it up in the WLI API. Still I am not sure this
is the right approach. I think you should consider defining a workflow variable
storing the name of the reply to queue to which you want to send the response
back.
Giora
"Robert Towler" <[email protected]> wrote:
I'm posting XML messages using JMS to the WLI EventQueue
I would like to access the JMS headers so that I can used
the JMSReplyTo field to specify the queue where I wish WLI
to post the result to.
Is there anyway in WLI I can acccess the JMS headers? -
Outbound JMS adapter with fx example
When I wire outbound jms adapter as a listener for the spreaderOut
<wlevs:stream id="spreaderOut" manageable="true">
<wlevs:listener ref="outboundJmsAdapter" />
</wlevs:stream>
I get a error in instantiation of the outbound jms adapter using the factory. Although a create instance method exists it gives me an error as follows:
at java.lang.Thread.run(Thread.java:595)
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'outboundJmsAdapter' defined in OSGi res[META-INF/spring/com.bea.wlrt.example.fx-context.xml|id=127|symName=fx]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: No matching factory method found: factory method 'createInstance'
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:448)
The adapter factory configuration is as defined in the adapter spring configuration.
<bean id="outboundJmsAdapter" class="com.bea.wlevs.example.jms.outbound.OutboundMessageAdapter" factory-method="createInstance">
<constructor-arg value="sample.outbound" />
<constructor-arg ref="wlsjmsQueueConnectionFactory"/>
<constructor-arg value="JMSQueueConnectionFactory01" />
<property name="destinationName">
<value>JMSResponseQueue01</value>
</property>
<property name="messageType">
<value>text</value>
</property>
</bean>
How do I resolve this?When I wire outbound jms adapter as a listener for the spreaderOut
<wlevs:stream id="spreaderOut" manageable="true">
<wlevs:listener ref="outboundJmsAdapter" />
</wlevs:stream>
I get a error in instantiation of the outbound jms adapter using the factory. Although a create instance method exists it gives me an error as follows:
at java.lang.Thread.run(Thread.java:595)
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'outboundJmsAdapter' defined in OSGi res[META-INF/spring/com.bea.wlrt.example.fx-context.xml|id=127|symName=fx]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: No matching factory method found: factory method 'createInstance'
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:448)
The adapter factory configuration is as defined in the adapter spring configuration.
<bean id="outboundJmsAdapter" class="com.bea.wlevs.example.jms.outbound.OutboundMessageAdapter" factory-method="createInstance">
<constructor-arg value="sample.outbound" />
<constructor-arg ref="wlsjmsQueueConnectionFactory"/>
<constructor-arg value="JMSQueueConnectionFactory01" />
<property name="destinationName">
<value>JMSResponseQueue01</value>
</property>
<property name="messageType">
<value>text</value>
</property>
</bean>
How do I resolve this? -
OEP 12.1.3
Following the instructions in 4 Adapters (12c Release 1 (12.1.3)) I have created a custom message converter bean for my Outbound JMS Adapter (I had to add the JAR file com.bea.wlevs.adapters.jms_12.1.3.0_0.jar from OEP_HOME\oep\modules to my project to make the code compile). However, upon deployment, I ran into a class not found exception:
<Sep 15, 2014 7:17:19 PM CEST> <Error> <org.springframework.osgi.extender.internal.activator.ContextLoaderListener> <BEA-000000> <Application context refresh failed (OsgiBundleXmlApplicationContext(bundle=CreditCardTheftDetection.AirportCreditCardTransactionProcessing, config=osgibundle:/META-INF/spring/*.xml))
java.lang.NoClassDefFoundError: saibot.airport.security.prevention.jms.SuspectedCreditCardEventConverter not found from bundle [CreditCardTheftDetection.AirportCreditCardTransactionProcessing (CreditCardTheftDetection.AirportCreditCardTransactionProcessing)]
at org.springframework.osgi.util.BundleDelegatingClassLoader.findClass(BundleDelegatingClassLoader.java:112)
at org.springframework.osgi.util.BundleDelegatingClassLoader.loadClass(BundleDelegatingClassLoader.java:156)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
Caused By: java.lang.NoClassDefFoundError: com/bea/wlevs/adapters/jms/api/OutboundMessageConverter
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188)
Caused By: java.lang.ClassNotFoundException: com.bea.wlevs.adapters.jms.api.OutboundMessageConverter
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
I have tried adding the JAR file (com.bea.wlevs.adapters.jms_12.1.3.0_0.jar) to my deployment JAR. That did not make any difference.
Does anyone know why this class OutboundMessageConverter is not found - and more importantly: what I can do to make it available in the run time?
thanks.
LucasTo make a package available to your application at runtime for OEP, you will need to add it to the application's MANIFEST.MF file to the Import Package section (since the OEP server is OSGi-based). There's no need to supply a version number, you can just enter the package name (e.g.)
com.bea.wlevs.adapters.jms.api, -
Who can tell me how to set HTTP request headers,for example ,If-Modified-Since,i only know how to get If-Modified-Since in servlet and use it.
Hy,
Headers are provided by the Browser you use. He controls the Content of it, eg. the accepted File types, the Browser name and type, HTTP Version used, ...
You can, however, add your custom Headers with the addHeader Methods in HttpServletResponse. Then, you can read them out on the Client, eg.
using Jsp, and react on the Client based on the given values.
Best regards
jherunter -
String JMS Headers from TextMessage inside Message Driven Bean
You get TextMessage inside onMessage(..) method of Message Driven Bean.
When you do toString() on the textMessage instance, at first, you get JMS headers. After that only, you get your actula message that you put in the queue.
I can always strip out the headers by String parsing. However, is there an elegant way (WebSphere Server Configuration, or MQ configuration, or JMS API) to remove JMS headers from the message so that I only get the actual message and no header?
Hearder is like:
JMS Message class: jms_text
JMSType: null
JMSDeliveryMode: 1
JMSExpiration: 0
JMSPriority: 0
JMSMessageID: ID:414d5120514d444f43444141202020204377126c20001a01
JMSTimestamp: 1132259105100
JMSCorrelationID:null
JMSDestination: null
JMSReplyTo: null
JMSRedelivered: false
JMS_IBM_PutDate:20051117
JMSXAppID:
JMS_IBM_Format:MQSTR
JMS_IBM_PutApplType:6
JMS_IBM_MsgType:8
JMSXUserID:clarkc
JMS_IBM_PutTime:20250510
JMSXDeliveryCount:1
My actual message starts here after all the above headers ........You can get the message directly with getText() method. Following is the snippet of code.
if (aMsg instanceof TextMessage) {
TextMessage msg = (TextMessage) aMsg;
String testMessage = msg.getText());
Kishore. -
How do I set up jms destination of OSB Alert?
According to the document description,a JMS destination URI in the format: jms://host:port/factoryJndiName/destJndiName. My jms is on a cluster, So, I Set this URI: jms://10.1.1.100:8001,10.1.1.101:8001,10.1.100:8002,10.1.1.101:8002/factoryJndiName/destJndiName.
When the machine (10.1.1.100) was shutdown, the alert will error and says "can not find JMS destination".
How do I set up jms destination? tks!
Edited by: user12382989 on 2009-12-23 下午5:03Did you consider using JMS distributed destination for your use-case?
http://download-llnw.oracle.com/docs/cd/E13222_01/wls/docs103/jms/dds.html
Manoj
Maybe you are looking for
-
Teachers Pension (UK) retro process
We have applied patch for Tiered contribution for teachers pension in UK legislation. In phase one, I made changes for deducting Teacher's pension and in second phase now I am trying to make changes for retro processing. I am following the readme.txt
-
JPA Entity persistance has strange behavior
Hello all, Well first off I apologize if this is in the wrong place as I am not using J2EE but J2SE with JPA and Spring 2.0. My issue is very simple but also very strange and I am unable to diagnose the problem. What I have is a method that persists
-
NoClassDefFoundError when deploying
Hello, when deploying my .ear file I get a "NoClassDefFoundError: BuchungDetailsBean" The BuchungDetailsBean is a JavaBean in a "office.war" file and is meant to be used in the session bean within a ejb-jar file. I already put a "class-path: Office.w
-
Some of my songs suddenly need to be located
Hello Ive been using my iTunes for a few months now without a single problem. Two days ago I opened iTunes and suddenly some of my songs could not longer be located. A dialog box opened asking me if I would like to locate them myself, and I had no tr
-
Eggdrop for IRC on Intel Mac?
I really want to run an eggdrop bot for IRC on my intel Mac Mini. I've been trying to find info on it but I can't seem to. Anyone on here know how to do this? Any help would be much appreciated.