Message Selector and Setting JMS Header Properties PL/SQL Enqueue
Currently I am attempting to use the Message selector functionality. I just know know exactly how we need to set the property in PL/SQL when enqueuing. I also want to verify the syntax that I should use in the event that I am doing this incorrectly...
The code I am using to test the enqueue is
declare
enqueue_options dbms_aq.enqueue_options_t;
message_properties dbms_aq.message_properties_t;
message_handle RAW(16);
agent sys.aq$_agent := sys.aq$_agent('', null, null);
message sys.aq$_jms_text_message;
recipients DBMS_AQ.aq$_recipient_list_t;
BEGIN
message := sys.aq$_jms_text_message.construct;
message.set_text('<ORDER><HEADER_ID>16992531</HEADER_ID></ORDER>');
message.header.set_string_property('bamfilter','ORDER_ENTRY');
dbms_aq.enqueue(queue_name => 'XX_OM_MONITOR_Q',
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
COMMIT;
END;
we have tried a few other methods, but still to no avail...
the syntax I believe for the selector in the ems should be bamfilter='ORDER_ENTRY'
Any help would be great.
The DB the Queue is locate is on 10g if that makes any difference...
Yes
I am able to specify JMS Header and JMS Properties when producing a message. However I am not able to user "Message Selector" to filter messages based on JMS Properties information when consuming messages.
In the link you provide, there is an example on how to use Message Selector:
# (a copy from the link)
Message Selector
...for example, you can enter logic, such as:
* JMSType = 'car' AND color = 'blue' AND weight > 2500
* Country in ('UK', 'US', 'France')
I believe the example with "Country" is exactly what I need, but I can´t get it work.
I create the same example above, setting a property named "Country" in the JMSHeader, sending the message to a JMS Queue (BPEL Process #1) and try to comsume it on the Message Selector (BPEL Process#2), but JMSAdapter never consumes the message.
Thanks for your help.
Similar Messages
-
How to set JMS Header Property without using DynamicConfiguration.
Hi,
My Scenario is: PDF File -->XI -->JMS
I need to send the PDF file as it is to JMS receiver, which shouldn't be a problem. The problem is I need to set the same file name in the Receiver JMS header property.
So to do this I am using DynamicConfiguration in message mapping but when File Adapter picks the PDF file (as it is) I get the run time mapping error which is quite obvious since message mapping expects the data in xml format.
Do you have any idea if I can avoid the message mapping and set the Dynamic Configuration somewhere else (not sure if java mapping can help here) or if there is some Module available to set file name in JMS header.
Note: PDF File name is dynamic.
Thanks!I am on XI 3.0. I am not good in java.. can someone give an example?
Update:-
I have done some changes to my code and now it is working for me. Since I don't have much knowledge in Java (except writing UDFs )so don't know how good this coding is but defiantly this is my first step to learn Java APIs. Thanks to everyone for their comments & suggestions!!
If any improvement in below code can be done please let me know.
package com.sap.xi;
import com.sap.aii.mapping.api.*;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import com.sap.aii.mapping.api.StreamTransformation;
import com.sap.aii.mapping.api.StreamTransformationException;
import org.xml.sax.helpers.DefaultHandler;
public class JMSHeaderMapping extends DefaultHandler implements StreamTransformation{
private Map param;
public void setParameter(Map map)//to access message header data during runtime
param = map;
if(param == null)
param = new HashMap();
public void execute(InputStream in, OutputStream out) //This method is used to run the mapping
throws StreamTransformationException
DynamicConfiguration dynamicconfiguration = (DynamicConfiguration)param.get("DynamicConfiguration");
DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File", "FileName");
String MyFileName = dynamicconfiguration.get(key);
DynamicConfigurationKey key1 = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/JMS","DCJMSMessageProperty0");
dynamicconfiguration.put(key1, MyFileName);
byte[] inbyte = null;
try {
// convert InputStream into byte stream
int bufsize = in.available();
inbyte = new byte[bufsize];
in.read(inbyte);
// convert byte stream into OutputStream
out.write(inbyte);
catch (Throwable t){
t.printStackTrace();
Edited by: Sarvesh Singh on May 9, 2011 8:47 PM -
Trouble using JMS Message Selector and DCJMSMessageProperty0
Hello Experts!
My scenario is Mainframe => MQ => JMS Adapter => XI => SAP
My MQ channel is communicating fine to XI and I've set the JMS adapter to JMS Compliant.
I have multiple message types with consistent headers but varying data layouts that I need to route to different mapping objects. So it seems the best solution for this is JMS Message Selector based on reading a header value from one of the dynamic message properties.
I've read SAP Notes and SAP Library and SDN Wiki articles about this configuration and I think its possible.
http://help.sap.com/saphelp_nw04s/helpdata/en/10/b1b4c8575a6e47954ad63438d303e4/frameset.htm
Note 856346 - J2EE JMS Adapter: Frequently Asked Questions (FAQ)
Note 1086303 - XI JMS Adapter and IBM Websphere MQ: FAQ
https://www.sdn.sap.com/irj/scn/wiki?path=/display/xi/usage%252bof%252bmessage%252bselector%252bfor%252bjms%252bsender%252badapter
My mainframe sends an MQ message that includes some extra header information like
field: ApplType VALUE: 000000002
field: ApplName VALUE: MIS056O
I configured my Communication Channel to set Adapter-Specific Message Attributes and also Additional JMS Message Properties to include ApplType and ApplName.
However, I can only see some of the standard JMS header items such as CorrelationID, none of the additional ones.
In RWB I see "JMS property 'ApplType' that corresponds to dynamic header 'DCJMSMessageProperty0' is missing from JMS message 'ID:f2f0f0f9f0f4f2f1f0f9f1f5f5f3f7f44040404040404040'; consequently it cannot be added to XI message 'e136a6e8-8580-4adc-2007-9ccab93f1ef4' as a dynamic header"
Can anyone with some experience doing this help me see if I'm missing a trick somewhere? How can I see where this information is being dropped? Could it be when MQ is handing to JMS?
Many thanks,
AaronAfter sifting through some IBM documentation I found that the PutApplName field actually maps to JMS name JMSXAppID. So after adding this to my Additional JMS Message Properties list I get the dynamic JMS message property I need for sorting out the messages.
http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/topic/com.ibm.mq.csqzaw.doc/uj25450_.htm -
JMS header properties are null
Hi all,
At sending messages to the internal WLI event queue from a client application
I get the following problem:
I set a application specific jms header property via the setStringProperty method.
An event node in the receiving workflow extracts the property with EventAttribute.
The event node gets the message but the header property is always null. I tried
various sorts of property names, none of them works. Only the real jms header
names which are set by the send method give non null values, but I cannot set
these in the client application.
Any ideas?Hi All,
I have got it working here is how i did it.
- transport header add a user defined name and value, it get added to outbound transport header.
- at receiving end. retrieve it using for/each loop for inbound header user properties.
Regards,
Amit -
Need help to check multiple conditions and set AD user properties
hello All,
I have a data csv sheet where information as follows, using below information I need to update AD account attributes based on below conditions . I have full right and I can set any user properties. So this is not access right issue.
samaccountname,Othertelephone,language,employeeId
abcd XXXXXXXXX EN SMS
Now I need to check following conditions:
Othertelephone = if this should not be blank ,if so display message " filed is blank " and no changes should allowed in further attributes and it should abort
language= this field should only contain EN or FR value if No display msg " error in language field " and no further changes to the user attributes and it should abort
employeeID= this field should only contain OTP or SMS value if Not filled display msg " error in Employee ID field " No further changes to the user attributes and it should abort
changes to user will permit when all attributes is filled. I do the testing taking samaccountname , othertelephone and employeeId into consideration but it did not helped. Getting error
THIS is complete Code Of my Task where you need my focus on conditions
group=Get-QAdGroup -SearchRoot "domain/vpn group"
Import-Csv D:\VPN.csv |
ForEach-Object{
if ($_.samaccountname -eq "")
Write-Host "SAMACCOUNTNAME is blank" -fore red
else
$user=Get-QAduser $_.samaccountname
if ($user.memberof -contains $group.DN)
Write-Host "$($_.Samaccountname) user is allready a member" -fore red
else
Add-QADGroupMember $group $_.Samaccountname
If ($_.othertelephone -eq "")
Write-Output "$($_.samaccountname) telephone Number is blank"
else
if ($_.EmployeeID -notmatch 'OTP' -and 'SMS')
Write-Output "$($_.samaccountname) EmployeeID field is not correctly field")
Else
Set-QADUser $_.SamAccountName -ObjectAttributes @{telephonenumber=$_.othertelephone;EmployeeID=$_.EmployeeID}
error
Set-QADUser : Access is denied.
At C:\Users\g512263\AppData\Local\Temp\5f8facb6-f942-4c3d-b924-8953d9a706da.ps1:37 char:8
+ Set-QADUser $_.SamAccountName -ObjectAttributes @{telephonenumber=$_.othe ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Set-QADUser], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Quest.ActiveRoles.ArsPowerShellSnapIn.Powershell.Cmdlets.SetUserCm
dlet<title>Untitled - PowerGUI Script Editor</title>
Hello JRV,Thank you for your time, There is no comma in my csv file , I double check. below I wrote a simple code.I removed all the conditions and just try to set the EmployeeID and it is working fine with same file.But as soon as I add conditions it gives access denied. as well as if I remove employee Id from your previous code and only try to set telephone No. still it gives access denied.I am just trying to figure out what is causing this.
$group=Get-QAdGroup -SearchRoot "com/Group"
Import-Csv D:\VPN.csv |
ForEach-Object{
if ($_.samaccountname -eq ""){
Write-Host "SAMACCOUNTNAME is blank" -fore red
}else{
$user=Get-QAduser $_.samaccountname
if ($user.memberof -contains $group.DN){
Write-Host "$($_.Samaccountname) user is allready a member" -fore red
}else
Add-QADGroupMember $group $_.Samaccountname
If ($_.othertelephone -ne "")
Set-QADUser $user.SamAccountName -ObjectAtt Aributes @{telephonenumber=$_.othertelephone}
} else
Write-Output "$($_.samaccountname) phonenumber is blank"
If ($_.EmployeeID -ne "")
Set-QADUser $_.SamAccountName -ObjectAttributes @{EmployeeID=$_.EmployeeID}
}else
Write-Output "$($_.samaccountname) EmployeeID field is blank"
If ($_.Preferredlanguage -ne "")
Set-QADUser $_.SamAccountName -ObjectAttributes @{Preferredlanguage=$_.preferredlanguage}
} else
Write-Output "$($_.samaccountname) PreferredLanguage field is blank" -
How to separate single iView to several and setting its' access properties?
Hello again!
Well now I create a single iView from my Web Dynpro application and it's work properly. My app based on CarRentalTutor but cities and vehicles for bookings saved in its' own tables.
View structure of my app for single view:
window:
|----view with only TabStrip
|--|--1st tab has a ViewContainerUIElement:
|--||--view with bookings list
|--||--view wich represents form for add/edit one booking
|--|--2nd tab has a ViewContainerUIElement:
|--||--view with cities list
|--||--view wich represents form for add/edit one city
|--|--3rd tab exactly like 2nd but for vehicles
Tasks:
1) I need create 2 iViews: one for booking list and form for add/edit and second with TabStrip with 2 tabs (for cities and vehicles).
2) create different roles for diff users - for example, one user can be only view a list of cities & vehicles; second can edit this data; 3-rd can adding bookings and so on. The question is: where I can make an appropriate settings?
For 1-st task I tried to do follow:
Create new structure:
window:
|----view with only TabStrip
|--|--1nd tab has a ViewContainerUIElement:
|--||--view with cities list
|--||--view wich represents form for add/edit one city
|--|--2rd tab exactly like 2nd but for vehicles
|----view with only ViewContainerUIElement (marked as default):
|--|--view with bookings list
|--|--view wich represents form for add/edit one booking
Doing step 6 from http://help.sap.com/saphelp_nw04s/helpdata/en/44/a765695df67037e10000000a422035/frameset.htm
Of course redeploy the app.
Creating new iView in portal, choose Create one iView from each application view, select my app and have no views to add
What was be wrong?
Regards,
LevHello, Sharadha
Yes, I have noticed about it. But I run my app inside the portal and need to have a multiple iViews.
Well let's try to do it with easy example: I have 2 views (call it "content views") contains only labels (for simplicity) and want to create 2 iViews - one for every of content views (hope this was clear)
Steps, wich I made:
1) create another 2 views (call it "root views"), wich have only ViewControllerUIElement containers
2) embed content views in these containers - one view per container. So I've got followed structure: root view #1 with embedded content view #1 and root view #2 with content view #2. One of the root views is default
3) set application property sap.canBeSplitInIViews to true
4) deploy app
5) in the portal go new iView->Web Dynpro Java application->Create one iView from each application view. Next I select my app, expand it and see only one view wich have default property set to true, but want to see all views...
(if I set default property to false for all root views then I see anything in the last step)
Please check this list for mistakes... I'm going crazy with it -
JMS Message Selector on Message Payload
Hi,
I have a requirement where in;
A JMS adapter consumes messages from an AQ JMS Topic. We need to make selective dequeue from the Topic. Is that possible to make use of the message selector option on the 'message payload'?
Message selector works on JMS Header and Properties as far as I know.
Any insight on this would be of great help :-)
Thanks,
Manoj Nair.It's like almost a month to get a response for such a generic JMS functionality. Looks like the Oracle SOA user base is really low. Anyone with a working example reference.
Thanks -
Can GG set JMS headers or properties when sending message to activeMQ?
Hi,
When GG generates JMS and send it to ActiveMQ, I need some metadata coming up with the message. I think JMS customised properties or headers would be the good place to set. But how does GG achieve this?
Thanks in advance.
Damienjava.class.path=dirprm:dirlib/my.jar;ggjava/ggjava.jar ... Note (typo): as classpath separator, use ";" on windows , ":" on unix/Linux. Or use the property gg.classpath for supplemental jars, which is actually parsed before setting the classpath, and you can use commas to separate jars & directories in a platform independent manner . The "-D" jvm "boot options" are passed straight through to the jvm when it is launched.
# additional jars
gg.classpath=dirlib/my.jar,dirlib/activemq-all.jar
# jvm options (windows)
javawriter.bootoptions=-Djava.class.path=dirprm;ggjava/ggjava.jar ... -D...Edited by: MikeN on Sep 15, 2012 10:14 AM -
XSLT sender plugin fails to set JMS message properties
When creating a JMS message to be put on a JMS queue, one of the XSLT for the XSLT automation plugin fails to set JMS string properties like: wlsmimehdrContent_Type
The content on the xslt are listed below.
The xslt in CPRLookupRequest.xslt sets:
wlsmimehdrContent_Type
SERVICE_SUFFIX
OSM_EVENT_TYPE
as expected, but the almost similar plugin NABSCreditEvalPluginRequest.xsl fails to set the same string JMS properties.
I'm looking for a clue, because I'm clueless. I'm an XSLT newbie, so it might be something simple.
The core part of the problem is put in bold in the listings below
h2. CPRLookupRequest.xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns="http://java.sun.com/products/oss/xml/ServiceActivation" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:oms="urn:com:metasolv:oms:xmlapi:1" xmlns:java="http://xml.apache.org/xalan/java" xmlns:xalan="http://xml.apache.org/xalan" xmlns:mslv-sa="http://www.metasolv.com/oss/ServiceActivation/2003" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:co="http://java.sun.com/products/oss/xml/Common" exclude-result-prefixes="oms java xsl xalan">
<xsl:param name="automator"/>
<xsl:param name="log"/>
<xsl:param name="context"/>
<xsl:param name="outboundMessage"/>
<xsl:output method="xml" indent="yes" omit-xml-declaration="no" xalan:indent-amount="5"/>
<xsl:template match="/">
<xsl:apply-templates select="oms:GetOrder.Response">
<xsl:with-param name="SERVICE_SUFFIX" select="'CprDomain/Cpr'"/>
<xsl:with-param name="OSM_EVENT_TYPE" select="'CPR_LOOKUP'"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="oms:GetOrder.Response">
<xsl:param name="SERVICE_SUFFIX" />
<xsl:param name="OSM_EVENT_TYPE" />
*<xsl:variable name="void2" select="java:setStringProperty($outboundMessage, '_wls_mimehdrContent_Type', 'text/xml; charset=UTF-8')" />*
*<xsl:variable name="void3" select="java:setStringProperty($outboundMessage, 'SERVICE_SUFFIX', $SERVICE_SUFFIX)" />*
*<xsl:variable name="void4" select="java:setStringProperty($outboundMessage, 'OSM_EVENT_TYPE', $OSM_EVENT_TYPE)" />*
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<env:Body env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<m:getPersonByCPR xmlns:m="/Cpr">
<getPersonByCprRequestInfo xmlns:n1="java:dk.tdc.soa.cpr.extern.datatypes" xsi:type="n1:GetPersonByCprRequestInfo">
<applicationId xsi:type="xsd:string"><xsl:text>CPR</xsl:text></applicationId>
<cprNumber xsi:type="xsd:string"><xsl:value-of select="oms:_root/oms:cpr" /></cprNumber>
</getPersonByCprRequestInfo>
</m:getPersonByCPR>
</env:Body>
</env:Envelope>
</xsl:template>
</xsl:stylesheet>
h2. NABSCreditEvalPluginRequest.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" exclude-result-prefixes="oms java xsl xalan"
xmlns="http://java.sun.com/products/oss/xml/ServiceActivation"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:oms="urn:com:metasolv:oms:xmlapi:1"
xmlns:java="http://xml.apache.org/xalan/java"
xmlns:xalan="http://xml.apache.org/xalan"
xmlns:mslv-sa="http://www.metasolv.com/oss/ServiceActivation/2003"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:co="http://java.sun.com/products/oss/xml/Common">
<xsl:param name="automator"/>
<xsl:param name="log"/>
<xsl:param name="context"/>
<xsl:param name="outboundMessage"/>
<xsl:template match="/">
<xsl:apply-templates select="oms:GetOrder.Response">
<xsl:with-param name="SERVICE_SUFFIX" select="'/APILink/CreditServices'"/>
<xsl:with-param name="OSM_EVENT_TYPE" select="'NABS_CREDIT_EVAL'"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="oms:GetOrder.Response">
<xsl:param name="SERVICE_SUFFIX"/>
<xsl:param name="OSM_EVENT_TYPE"/>
*<xsl:variable name="void2" select="java:setStringProperty($outboundMessage, '_wls_mimehdrContent_Type', 'text/xml; charset=UTF-8')"/>*
*<xsl:variable name="void3" select="java:setStringProperty($outboundMessage, 'SERVICE_SUFFIX', $SERVICE_SUFFIX)"/>*
*<xsl:variable name="void4" select="java:setStringProperty($outboundMessage, 'OSM_EVENT_TYPE', $OSM_EVENT_TYPE)"/>*
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<env:Body env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<xsl:choose>
<xsl:when test="count(oms:_root/oms:cpr) + count(oms:_root/oms:birthDayPart) >0">
<xsl:call-template name="private" />
</xsl:when>
<xsl:when test="count(oms:_root/oms:cvr) > 0">
<xsl:call-template name="business" />
</xsl:when>
</xsl:choose>
</env:Body>
</env:Envelope>
</xsl:template>
<xsl:template name="private">
<m:validatePrivateCustomer xmlns:m="java:dk.tdc.apilink.logic.sessions.interfaces">
<validateCustomerCreditInput xsi:type="n1:ValidateCustomerCreditInput" xmlns:n1="java:dk.tdc.apilink.logic.datatypes">
<accountCategory xsi:type="java1:char" xmlns:java1="java:language_builtins">
<xsl:text>I</xsl:text>
</accountCategory>
<adrLocation xsi:type="xsd:string">
<xsl:value-of select="oms:_root/oms:houseNo"/>
</adrLocation>
<adrStreetName xsi:type="xsd:string">
<xsl:value-of select="oms:_root/oms:streetName"/>
</adrStreetName>
<adrZip xsi:type="xsd:string">
<xsl:value-of select="oms:_root/oms:zipCode"/>
</adrZip>
<xsl:choose>
<xsl:when test="count(oms:_root/oms:birthDayPart) > 0">
<birthDate xsi:type="xsd:string">
<xsl:value-of select="substring(oms:_root/oms:birthDayPart,1,4)"/><xsl:text>.</xsl:text>
<xsl:value-of select="substring(oms:_root/oms:birthDayPart,5,2)"/><xsl:text>.</xsl:text>
<xsl:value-of select="substring(oms:_root/oms:birthDayPart,7,2)"/>
</birthDate>
</xsl:when>
<xsl:otherwise>
<birthDate xsi:type="xsd:string">
<xsl:text>19</xsl:text>
<xsl:value-of select="substring(oms:_root/oms:cpr,5,2)"/><xsl:text>.</xsl:text>
<xsl:value-of select="substring(oms:_root/oms:cpr,3,2)"/><xsl:text>.</xsl:text>
<xsl:value-of select="substring(oms:_root/oms:cpr,1,2)"/>
</birthDate>
</xsl:otherwise>
</xsl:choose>
<firstName xsi:type="xsd:string">
<xsl:value-of select="oms:_root/oms:firstName"/>
</firstName>
<lastBusinessName xsi:type="xsd:string">
<xsl:value-of select="oms:_root/oms:lastName"/>
</lastBusinessName>
</validateCustomerCreditInput>
</m:validatePrivateCustomer>
</xsl:template>
<xsl:template name="business">
<m:validateCompanyCustomer xmlns:m="java:dk.tdc.apilink.logic.sessions.interfaces">
<validateCustomerCreditInput xsi:type="n1:ValidateCustomerCreditInput" xmlns:n1="java:dk.tdc.apilink.logic.datatypes">
<accountCategory xsi:type="java1:char" xmlns:java1="java:language_builtins">
<xsl:text>B</xsl:text>
</accountCategory>
<cvrNumber xsi:type="xsd:string">
<xsl:value-of select="oms:_root/oms:cvr"/>
</cvrNumber>
</validateCustomerCreditInput>
</m:validateCompanyCustomer>
</xsl:template>
</xsl:stylesheet>I have written an UDF to determine the filename dynamicly:
//write your code here
String str = "SAPDATA-" + a + "ES" + ".xml";
DynamicConfiguration conf = (DynamicConfiguration)
container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey FileName = DynamicConfigurationKey.create("http:/"+"/sap.com/xi/XI/System/File","FileName");
conf.put(FileName, str);
return ""; -
OSB JMS Message Selector / Filter
HTTP PS and JMS BS puts messages on WLS JMS Queue. We need consume some messages from the Queue based on payload content since interfaces for other messages may go Live in next year.
JMS Message look like
<Schools>
<School>
<Id></Id>
<ServiceArea>100</ServiceArea>
<Type></Type>
</School>
</Schools>
We need to consume messages where ServiceArea = 100.
Can you advise how to consume messages where ServiceArea = 100 ?
I would appreciate your help.
Thanks in advance.
Kiran
Edited by: 844345 on Mar 14, 2011 5:02 PMJMS message selector on message payload fields is not recommended and it will have performance implications. Instead you can design this in either of the 2 ways below
1 - Modify the HTTP PS which publishes the message to set the JMSCorrerlationID header ( or any othe custom JMS property) with the value of Service Area. You can achieve this using Transport Header action in HTTP PS route node.
For the JMS consumer proxy set a message selector on the JMS transport page to filter only messages belonging to this service area.
2. Let the HTTP PS continue publishing all messages to the output queue. Have a new component in your design called a 'disaptcher' which reads all the message from the output queue, check service area tag and route messages belonging to particular area to an area specific queue. Have your jms consumer specific for service area 100 to listen to only this Area specific queue. -
Setting values to properties on load
Hi,
I have a big Trouble on Data Populating to the components on page loading like,
Have page1 and page2.Based on ID passed from page1,query should execute and results should set to the form on page2 through Backing Bean.
What doing is..
using setActionListener passing ID from page1 and setting to method in page2 as argument which gets results based on ID and sets to component properties, here the problem is..
Before page2 loads method called first from setActionListener where we cannot set the values to properties before loading.
How can we set values to components in backing bean only on load based on ID from other page.
And one more issue is, if we make any code in setter property it get executes every time,
what is the correct procedure to execute the method only on loading.
Does there any procedure to make method to excecute only on load.
Please suggest me, how can i overcome this issues,these were become major issue for the Development.
Thanks,
Bandaru.hi,
we tried to achieve the same thing.. But its not possible to set the values to individual segments of a KFF..
Thanks,
raghav. -
Create profile and set console font
Hi,
I'm not really a powershell expert, even though i use it daily. I've been looking into creating a profile to make life easier. So i made a little script to auto create a profile and set the console properties, load some modules etc.
The one thing i have not found an answer for is how can i set the console to use Lucinda Console font in stead of that dreadful raster font?
This posting is provided "AS IS" with no warranties or guarantees and confers no rightsHi,
Thanks. I am aware of the console settings available to powershell, but thanks anyway.
So the reg settings should be stored for the current user only in the key HKCU\Console. That will only affect the logged on user. It is not dynamic, as you say, but that's ok. I just need to have it set.
So changing the following settings would change the font for CMD.exe and powershell.exe:
REG ADD HKCU\Console /v FaceName /d "Lucida Console" /f
REG ADD HKCU\Console /v FontSize /t REG_DWORD /d 0x000c0000 /f
REG ADD HKCU\Console /v FontWeight /t REG_DWORD /d 0x00000190 /f
REG ADD HKCU\Console /v FontFamily /t REG_DWORD /d 0x36 /f
Push-Location
Set-Location HKCU:\Console
New-Item ".\%SystemRoot%_system32_WindowsPowerShell_v1.0_powershell.exe"
Set-Location ".\%SystemRoot%_system32_WindowsPowerShell_v1.0_powershell.exe"
New-ItemProperty . FaceName -type STRING -value "Lucida Console"
New-ItemProperty . FontFamily -type DWORD -value 0x00000036
New-ItemProperty . FontSize -type DWORD -value 0x000c0000
New-ItemProperty . FontWeight -type DWORD -value 0x00000190
New-ItemProperty . HistoryNoDup -type DWORD -value 0x00000000
New-ItemProperty . QuickEdit -type DWORD -value 0x00000001
Pop-Location
Push-Location
Set-Location HKCU:\Console
New-Item '.\%SystemRoot%_SysWOW64_WindowsPowerShell_v1.0_powershell.exe'
Set-Location '.\%SystemRoot%_SysWOW64_WindowsPowerShell_v1.0_powershell.exe'
New-ItemProperty . FaceName -type STRING -value "Lucida Console"
New-ItemProperty . FontFamily -type DWORD -value 0x00000036
New-ItemProperty . FontSize -type DWORD -value 0x000c0000
New-ItemProperty . FontWeight -type DWORD -value 0x00000190
New-ItemProperty . HistoryNoDup -type DWORD -value 0x00000000
New-ItemProperty . QuickEdit -type DWORD -value 0x00000001
Pop-Location
So, that should've done the trick. I can open cmd.exe and powershell.exe, open the system menu, go to defaults, and verify that the settings are in fact set. However, the settings just doesn't take effect. I even opened the properties dialog box for the
PowerShell shortcut, to check the settings and I can still confirm that it had set the font correctly.
Still, whenever I launch PowerShell, I am greeted with the ugly raster font. So, the last check I did was to go into properties in the PowerShell window system menu, and check the font.
It was set to raster. So I changed it. The next time I opened PowerShell, it was back to raster.
So, no matter where I set it, or what I set, it still goes back to raster every da** time.
Where i come from, we call this a bug... A very annoying bug...
Edit: Btw, this is only happening on a handful of servers, not all. On some i am able to successfully script changing the font.
This posting is provided "AS IS" with no warranties or guarantees and confers no rights -
JMS Header: JMS Properties and Message Selector
Hi all
I´m using a JMS Adapter to consume messages from a JMS queue (a JMS adapter which create the BPEL instance when a message arrives).
The process must select messages which meet certain criterias, so I´m using Message Selector to filter the messages and only pick up the ones who interest me (If click on the "help" button on JDeveloper Wizard in the page you define Message Selector, you can see an example on how doing this).
So how can I select messages using values placed on JMS Properties, in the Message Selector?
For example, I set in the JMS Header:
JMSInboundHeadersAndProperties
--------JMSInboundProperties
----------------Property
-----------------------name = 'Country'
-----------------------value = 'Brazil'
The JMSAdapter must consume only messages that "Country" = "Brazil".
Thanks in advance.
MenezesYes
I am able to specify JMS Header and JMS Properties when producing a message. However I am not able to user "Message Selector" to filter messages based on JMS Properties information when consuming messages.
In the link you provide, there is an example on how to use Message Selector:
# (a copy from the link)
Message Selector
...for example, you can enter logic, such as:
* JMSType = 'car' AND color = 'blue' AND weight > 2500
* Country in ('UK', 'US', 'France')
I believe the example with "Country" is exactly what I need, but I can´t get it work.
I create the same example above, setting a property named "Country" in the JMSHeader, sending the message to a JMS Queue (BPEL Process #1) and try to comsume it on the Message Selector (BPEL Process#2), but JMSAdapter never consumes the message.
Thanks for your help. -
Setting JMS Message header and properties in JMS Adapter ESB Component
Hi,
I am new to using some of these adapters in Oracle ESB and need some help.
I am trying to define a JMS Publisher using JMS Adapter component in JDeveloper. I would like to publish messages with message property set to a topic. I dont find a way to do that.
I see that for consuming JMS messages, the JMS Adapter allows to specify message selector but I could not find a way for producing message with a user defined message property. I would like to use that property in the message selector to filter messages and consume.
I am using Oracle SOA Suite 10.1.3.3.x
Can someone help please?
Thanks.Thanks for the response.
I think I found the solution although I havent tried it out yet.
ESB sample 110.JMStoJMSHeaders outlines the approach.
It is my understanding that JMS Message selector can work on JMS header or JMS properties (user defined) but not on JMS body. (All the three constitue a JMS message). Hence the need to set a JMS property prior to publishing the message to a topic/queue.
Thanks. -
How to set MQ message header properties using JMS adapter? (10.1.2)
Hello,
I am trying to send MQ messages from a BPEL process. We are using OAS 10.1.2 and JMS MQ adapter. Could you please let me know how to set the message descriptors like message format, type, report and reply to queue properties and queue open options (in jmsAdapterOutboundHeader).
Regards,
Geratayyaput something like this
<activationAgents>
<activationAgent className="oracle.tip.adapter.fw.agent.jca.JCAActivationAgent" partnerLink="PARNERLINKNAME">
<property name="clusterGroupId">SOMEUNIQUEVALUE</property>
<property name="portType">PARTNERLINK_PORTTYPE</property>
</activationAgent>
</activationAgents>
Maybe you are looking for
-
Hello, i recently had my mac Laptop serviced which involved wiping the hard drive, and now i have to re-install windows. i have my windows 7 ultimate CD and my mac is running fully updated software, every time i hit start installation of windows on b
-
Hi Anybody I seemed to have picked something on my MacBook Pro that hits me with a survey that involves winning a new iPhone 5 or iPad. Is there anything you can advise to get rid of whatever it is? Bear in mind I am a greenhorn with regard to comp
-
Resetting bluetooth may fix your mighty mouse scroll button
I have had this problem with the scroll button on my mighty mouse for months and months, and the only advise I have managed to get from here when I complained was to clean it. But I tried that many times and I have had nothing but problems with it, s
-
Cannot Uninstall program-Search Protect
I am using Vista Home Premium. I Cannot Uninstall some programs -Search Protect and Mozilla Firefox. I receive an error saying that "couldn't load XPCOM", this only happens when I try to start Firefox. Tomespo
-
Hello I'm new in Oracle (First day in oracle), in one company i have Oracle 11g (windows server 2003), but the problem is that I need to understand: 1) Name an location in file sistem of instances created 2) Name an location in file sistem of databas