Dynamic topics and queues
I'd like to know if a JMS client can create a topic or queue dynamically to be used by others JMS clients, or this is a operation which only can be performed by JMS server.
Thanks in advance.
I should add that the JMS spec does define an API for creating 'temporary destinations', e.g., using the QueueSession.createTemporaryQueue() method. However these have a few limitations over standard destinations: firstly, they only survive for the lifetime of the connection from which they were created, when the connection is closed the destination is destroyed and the contents is lost; secondly, although producers from any connection can produce messages to a temporary destination, only consumers that belong to the same connection within which the temporary destination was created are able to consume from a given temporary destination. All that said, temporary destinations can often be useful, particularly for handling request/response type interactions - see QueueRequestors too for more info.
Best regards,
David Ingham
Arjuna Technologies - http://www.arjuna.com
Similar Messages
-
Can JMS topics and queues be clustered in a WLS 7.0 Cluster?
We are installing a weblogic 7.0 cluster with 1 admin server and 2 managed
node servers. Two nodes have been clustered. We are at the point where we
need to configure JMS. Has any one implemented JMS in WLS 7 clustered
environment? What are the things to watch out when clustering JMS? Can JMS
topics and queues be clustered?
TIA for any helpful hints and comments.
Regards
"Karim Ali" <[email protected]> wrote:
>> Has any one implemented JMS in WLS 7 clustered
>> environment?
I'm currently working on a project with WLS 7 here at work, involving
the implementation of BEA's JMS Cluster. So far, I really haven't had
many hiccups.
"Karim Ali" <[email protected]> wrote:
>> What are the things to watch out when clustering JMS?
At least in WLS 7, the biggest thing that stands out is the lack of
automatic failover. Also, Message Paging -- make sure you configure
paging high/low thresholds. Or, if you don't wish for it to occur but
can't stop the server (very common these days with SLAs), set that
byte/message high threshold to a very large number (correct me if I'm
wrong, but I believe BEA recommends 2^63 -1).
"Karim Ali" <[email protected]> wrote:
>> Can JMS topics and queues be clustered?
Well, since Topics and Queues are extensions of the
javax.jms.Destination interface, the answer is: Yes!
(SIDE NOTE: most people usually refer to them as a [JMS] "destination"
-- it avoids a lot of conceptual baggage and plus, less typing!)
You'll probably want to see this section of BEA's e-docs:
http://edocs.bea.com/wls/docs70/adminguide/jms.html#config_distributed_destinations
later,
Brian J. Mitchell
BEA Systems Administrator
TRX
Atlanta, GA
email: [email protected]
office: 404-327-7238
mobile: 678-283-6530
-
Creating topics and queues programatically
Hi,
Here i my scenario.
1. I have created the required number of queues and topics using the SunOne MQ's imqcmd command.
2. I want to use the jndi apis to register the jndia names for these queues in the appserver. How do we do this?
3. How to make an entry in the server.xml file programatically?
Note:- i do no t want to use the asadmin-utility for this.
i want to use the standard api's available to do this task.
Pls help
regards
raghuHi Raghu,
You appear to have created various topics and queues
on a MQ broker via the imqcmd command (independent
of app server).
For JMS clients to access/use the above topics/queues,
JMS resources of type javax.jms.Topic and javax.jms.Queue
need to be created and exposed to app server's JNDI
context.
Running this command:
asadmin create-jms-resource ...
Creates a new jms-resource entry in server.xml and
the command:
asadmin reconfig ...
Creates the actual java object and introduces it into
app server's JNDI context. (A server restart does this too).
You mention that you want to do the above from your code.
I don't think it is possible to programatically add new
resources into server.xml. If there was a way, I wouldn't
recommend it be done from J2EE applications since JMS resource
management is an administrative task. Note that using
JNDI to bind an object from an application (I haven't tried it
in app server) may appear to work but this resource is not
persisted across restarts since it is not in server.xml.
Why do you want to do this ? Why does your application need to do
what asadmin already does today ?
Perhaps if I can better understand why you want to do this I can
help suggest other solutions.
regards,
-isa -
Distinguishing between topics and queues
Hi,
I have a generic piece of code that takes a javax.jms.Destination that does different
things depending if the destination is a queue or a topic.
The problem is that it seems that destinations in Weblogic implement both queue
and topic:
instanceof queue <new_JMSTopic_1>
queue name: <new_JMSTopic_1>
weblogic.jms.common.InvalidDestinationException: Destination must be a queue,
ne
w_JMSTopic_1
at weblogic.jms.common.Destination.checkDestinationType(Destination.java
:113)
at weblogic.jms.client.JMSSession.createBrowser(JMSSession.java:1516)
at weblogic.jms.client.JMSSession.createBrowser(JMSSession.java:1500)
at Test.run(Test.java:100)
at Test.main(Test.java:311)
Is there anyway for me to programatically distinguish between queues and topics
as there seems not to be any javadoc on weblogic.jms.common.Destination and instanceof
does not work? I would prefer not to rely on exceptions.
I'm using Weblogic 8.1 sp2.
Thanks
Riad
Cool. Thanks for your help Tom.
Riad
Tom Barnes <[email protected]> wrote:
>Hi Riad,
>
>This has come up before.
>
>For now, you may cast dest to weblogic.jms.common.DestinationImpl
>and call "isQueue()". Normally, only the javadoc'd methods
>in weblogic.jms.extensions are intended for public use,
>but for this case we make an exception.
>
>In the next release, this method will be exposed through
>a new public WL JMS API extension:
>weblogic.jms.extensions.WLDestination,
>and might not be available otherwise.
>
>Tom, BEA
>
>P.S. A java tip: The JDK's built-in "javap"
>is useful for viewing an arbitrary class api.
>As in "javap weblogic.jms.extensions.JMSHelper".
>
>Riad wrote:
>> Hi,
>>
>> I have a generic piece of code that takes a javax.jms.Destination that
>does different
>> things depending if the destination is a queue or a topic.
>>
>> The problem is that it seems that destinations in Weblogic implement
>both queue
>> and topic:
>> instanceof queue <new_JMSTopic_1>
>> queue name: <new_JMSTopic_1>
>> weblogic.jms.common.InvalidDestinationException: Destination must be
>a queue,
>> ne
>> w_JMSTopic_1
>> at weblogic.jms.common.Destination.checkDestinationType(Destination.java
>> :113)
>> at weblogic.jms.client.JMSSession.createBrowser(JMSSession.java:1516)
>> at weblogic.jms.client.JMSSession.createBrowser(JMSSession.java:1500)
>> at Test.run(Test.java:100)
>> at Test.main(Test.java:311)
>>
>> Is there anyway for me to programatically distinguish between queues
>and topics
>> as there seems not to be any javadoc on weblogic.jms.common.Destination
>and instanceof
>> does not work? I would prefer not to rely on exceptions.
>>
>> I'm using Weblogic 8.1 sp2.
>>
>> Thanks
>> Riad
>
-
Request-Reply in JMSAdapter SOA 11g using a Topic and a Queue
Hi All
We are trying to implement JMS Request\Reply with Tibco EMS Server using JMS Request\Reply. Problem is that Tibco has exposed a topic (where request message has been enqueued) and replies the message is a pre defined JMS queue.
I am trying to use JMS adapter in SOA 11g (OSB doesnt support request\reply as soon as destination is selected as Topic ) with foreign JMS server setup in weblogic.
Problem is that when i invoke the composite, it errors out saying that request destination has to be a queue. I tried to find any sample that talks about request-reply with topics but could not find any.
Is request-reply pattern supported with topics or topic-queue combinations in JMS adapter 11g? Please let u know. ThanksHi All
The request-reply pattern is working with queues and topics, but not with topic and queue. The issue is with this:
<adapter-config name="RemoteOSBJMSService" adapter="JMS Adapter"
wsdlLocation="RemoteOSBJMSService.wsdl"
xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
<connection-factory location="eis/JMS/RequestReplyTopic"
UIJmsProvider="WLSJMS" UiOperationMode="Asynchronous"
UIConnectionName="chdsez147855d"/>
<endpoint-activation portType="Reply_ptt" operation="Reply"
UITransmissionPrimitive="Request-response">
<activation-spec className="oracle.tip.adapter.jms.inbound.JmsConsumeActivationSpec">
<property name="PayloadType" value="TextMessage"/>
<property name="UseMessageListener" value="false"/>
<property name="DestinationName" value="jms.soa.local.response.q"/>
</activation-spec>
</endpoint-activation>
<endpoint-interaction portType="Request_ptt" operation="Request"
UITransmissionPrimitive="Request-response">
<interaction-spec className="oracle.tip.adapter.jms.outbound.JmsProduceInteractionSpec">
<property name="TimeToLive" value="0"/>
<property name="PayloadType" value="TextMessage"/>
<property name="DeliveryMode" value="Persistent"/>
<property name="DestinationName" value="jms.soa.local.request.topic"/>
</interaction-spec>
</endpoint-interaction>
</adapter-config>
The connection factory "eis/JMS/RequestReplyTopic" can either hold isTopic as false or true. If i set it to false, it doesnt even let me enqueue and if i set it to true. The reply doesnt arrive.
Please help! -
How to create Bridge connecting distributed Topic to queue
Hi,
I am trying to create a bridge which connects distributed topic with JMS queue.
Both the topic and queue are in the same domain.
But it is not getting connected. Status is failed.
Below is the configuration -
<messaging-bridge>
<name>DisTopicBridge</name>
<target>Managed_soa_server01</target>
<source-destination>DisTopicSource</source-destination>
<target-destination>QueueSource1</target-destination>
<selector></selector>
<quality-of-service>Exactly-once</quality-of-service>
<qos-degradation-allowed>false</qos-degradation-allowed>
<durability-enabled>true</durability-enabled>
<idle-time-maximum>60</idle-time-maximum>
<async-enabled>true</async-enabled>
<started>true</started>
<preserve-msg-property>false</preserve-msg-property>
</messaging-bridge>
<jms-bridge-destination>
<name>DisTopicSource</name>
<adapter-jndi-name>eis.jms.WLSConnectionFactoryJNDIXA</adapter-jndi-name>
<classpath></classpath>
<connection-factory-jndi-name>jndi/TestConnectionFactory</connection-factory-jndi-name>
<initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
<connection-url>t3://xxx.xx.xxx.40:9101</connection-url>
<destination-jndi-name>jndi/TestDistributedTopic</destination-jndi-name>
<destination-type>Topic</destination-type>
</jms-bridge-destination>
<jms-bridge-destination>
<name>QueueSource1</name>
<adapter-jndi-name>eis.jms.WLSConnectionFactoryJNDIXA</adapter-jndi-name>
<classpath></classpath>
<connection-factory-jndi-name>jndi/QConnectionFactory</connection-factory-jndi-name>
<initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
<connection-url>t3://xxx.xx.xxx.40:9101</connection-url>
<destination-jndi-name>jndi/TestQueue2</destination-jndi-name>
<destination-type>Queue</destination-type>
</jms-bridge-destination>
Error in the log:
<Warning> <MessagingBridge> <server-app-01> <Managed_soa_server01> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <d632395af8efc868:3b2a67dd:13752cfef88:-8000-00000000000d3c66> <1337198463908> <BEA-200026> <Bridge "DisTopicBridge" encountered some problems in one of its adapters or underlying systems. It stopped transferring messages and will try to reconnect to the adapters shortly. (The exception caught was javax.resource.ResourceException: Error setting message listener.)>
<Info> <MessagingBridge> <server-app-01> <Managed_soa_server01> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <d632395af8efc868:3b2a67dd:13752cfef88:-8000-00000000000d3c67> <1337198463908> <BEA-200020> <Bridge "DisTopicBridge" is stopped.>
<Info> <MessagingBridge> <server-app-01> <Managed_soa_server01> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <d632395af8efc868:3b2a67dd:13752cfef88:-8000-00000000000d3cb9> <1337198471319> <BEA-200034> <Bridge "DisTopicBridge" is shut down.>
Is there any special way we have to configure the Bridge while using Distributed topic?Hello,
Please find the more details about the error we are receiving ( BEA-200026 )
http://docs.oracle.com/cd/E13222_01/wls/docs100/messages/Bridge.html
BEA-200026
Warning: Bridge "arg01" encountered some problems in one of its adapters or underlying systems. It stopped transferring messages and will try to reconnect to the adapters shortly. (The exception caught was t.)
Description
This message indicates that errors occurred during the process of transferring messages. The bridge stopped its connections to both adapters and will attempt reconnect soon.
Cause
There was a problem in receiving or sending messages to one of the sides of the bridge.
Action
No action required.
I would also request you to specify the version of weblogic and verify if the adapter is being deployed properly.
Please reveiw the bridge document
http://docs.oracle.com/cd/E11035_01/wls100/bridge/bridgefaq.html
Can you also check the status of the bridge
Messaging –> Bridges –> YOUR_Bridge_NAME –> Monitoring [tab]
Please provide the above required details
-Vishal Iyer -
1 "simple" JMS topic and 2 cluster elements with OSB
Hi,
I have 1 simple jms topic (not distributed, not on migratable target) and cluster with 2 members - OSB as main application. My OSB proxy service reads from this topic and saves data to file.
The problem is that reading from topic appears twice - once by each cluster member. How to configure topic or proxy service for only one reading?FYI - At this year's Oracle OpenWorld, which is being held in conjunction with this year's JavaOne, Oracle will be announcing a set of enhancements that are designed to cover this exact use case.
Tom Barnes
Session ID: S317469
Title: New Service-Oriented Architecture Patterns with Enterprise Grid Messaging
Abstract: Messaging systems are essential in enabling the flexibility and loosely coupled nature of a service-oriented architecture (SOA). Oracle WebLogic Java Message Service (JMS) includes new pub-sub capabilities that make architectures more adaptable, allowing message producers to be ignorant of who is the consumer of a message or how many consumers there are. It also enables easy scale out and dynamic adaptability through clustering and message-driven bean (MDB) enhancements, all while still guaranteeing strict message ordering. This session will outline new JMS capabilities and show how they enable new designs with Oracle WebLogic Server and Oracle Service Bus.
Speaker(s): Dongbo Xiao, Oracle, Principal Member of Technical Staff
Biography not available.
David Cabelus, Oracle USA, Senior Principal Product Manager
Dave Cabelus is a Senior Principal Product Manager in the WebLogic Server group at Oracle. Dave's responsibilities include product strategy and direction for various pieces of WebLogic Server, including Java Messaging, Operations and Management, Diagnostics, and various other initiatives, and previously included database connectivity, transactions, and Web tier integration. In the industry since 1996 and involved in Java since 1999, Dave worked at various software companies including Logic Works, Platinum Software, Kana, and a few startups before coming to Oracle (BEA) in 2001.
Event: JavaOne and Oracle Develop
Stream(s): ORACLE DEVELOP, DEVELOP
Track(s): Application Grid and Oracle WebLogic
Tags: Add
Session Type: Conference Session
Session Category: Features
Duration: 60 min.
Schedule: Thursday, September 23, 11:00AM | Hotel Nikko, Nikko Ballroom II Available
Edited by: TomB on Aug 12, 2010 1:21 PM -
Reading old message from Topic or queue
How i can read old message from jms topic or queue?
It depends on what you mean by "old" and what your JMS implementation is. Old as in expired or as in previously delivered?
Sending expired or previously delivered messages with DropboxMQ is as simple as moving the message files around using a shell or file explorer.
http://dropboxmq.sourceforge.net
Dwayne -
JMS destination and queue in jndi.properties
I am using activemq to create a very simple jms application.
But there is a point I have not understand.The administered connection factory object that I use is org.activemq.jndi.ActiveMQInitialContextFactory which is the ActiveMq specific object. Do I have to do the same with the destination object?I read that Destination is also an administered object so I have to use an object of the ActiveMq? Specifically in the jndi properties where I define the queue property the value must be:
1.an activeMq object
2.a java class that implements the javax.jsm.Queue interface
3.a physical name of another server?
and in the code where I look up the destination object
Destination destination = (Destination) jndiContext.lookup(queueProp);What exactly will be the queueProp? I would appreciate an example
Thanking you in advance.I've read the documentation but I am afraid I miss some points.
First of all I use the following code from an example in the net where the <b> activemq.jar is >/b> used and the jndi.properties is not used at all and the following code is working:package jms;
import org.activemq.ActiveMQConnectionFactory;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.ExceptionListener;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
* Hello world!
public class App {
public static void main(String[] args) throws Exception {
thread(new HelloWorldBroker(args), true);
Thread.sleep(1000);
thread(new HelloWorldProducer(), false);
thread(new HelloWorldProducer(), false);
thread(new HelloWorldConsumer(), false);
Thread.sleep(1000);
thread(new HelloWorldConsumer(), false);
Thread.sleep(1000);
thread(new HelloWorldConsumer(), false);
thread(new HelloWorldProducer(), false);
Thread.sleep(1000);
thread(new HelloWorldProducer(), false);
thread(new HelloWorldConsumer(), false);
public static void thread(Runnable runnable, boolean daemon) {
Thread brokerThread = new Thread(runnable);
brokerThread.setDaemon(daemon);
brokerThread.start();
public static class HelloWorldBroker implements Runnable {
private final String[] args;
public HelloWorldBroker(String[] args) {
this.args = args;
public void run() {
org.activemq.broker.impl.Main.main(args);
public static class HelloWorldProducer implements Runnable {
public void run() {
try {
// Create a ConnectionFactory
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// Create a Connection
Connection connection = connectionFactory.createConnection();
connection.start();
// Create a Session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Create the destination (Topic or Queue)
Destination destination = session.createQueue("TEST.FOO");
// Create a MessageProducer from the Session to the Topic or Queue
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// Create a messages
String text = "Hello world! From: " + Thread.currentThread().getName() + " : " + this.hashCode();
TextMessage message = session.createTextMessage(text);
// Tell the producer to send the message
System.out.println("Sent message: "+ message.hashCode() + " : " + Thread.currentThread().getName());
producer.send(message);
// Clean up
session.close();
connection.close();
catch (Exception e) {
System.out.println("Caught: " + e);
e.printStackTrace();
public static class HelloWorldConsumer implements Runnable, ExceptionListener {
public void run() {
try {
// Create a ConnectionFactory
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// Create a Connection
Connection connection = connectionFactory.createConnection();
connection.start();
connection.setExceptionListener(this);
// Create a Session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Create the destination (Topic or Queue)
Destination destination = session.createQueue("TEST.FOO");
// Create a MessageConsumer from the Session to the Topic or Queue
MessageConsumer consumer = session.createConsumer(destination);
// Wait for a message
Message message = consumer.receive(1000);
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
String text = textMessage.getText();
System.out.println("Received: " + text);
} else {
System.out.println("Received: " + message);
consumer.close();
session.close();
connection.close();
} catch (Exception e) {
System.out.println("Caught: " + e);
e.printStackTrace();
public synchronized void onException(JMSException ex) {
System.out.println("JMS Exception occured. Shutting down client.");
}But I want to make it work with jndi.properties.
So I am trying to use a code where connectionFactory and Destination are loaded from the jndi properties.After experimenting with code
the following is working
try {
connectionFactory = (ConnectionFactory) jndiContext.lookup("connectionFactory");
Destination destination = (Destination) jndiContext.lookup("QUEUE/MYQUEUE");
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);if only I go to the activeqm/bin folder and open the broker.If I did that in the previous code(with no jndi prop)
there was an exception that was saying that the port was already used.So I do not understand why in the one case opening broker is necessary for the connection and on the other hand it causes a problem.
Moreover in the case that I invoke broker from bin folder. In this case I would like to ask a question.The activemq.xml is necessary? If yes it is there where we define the queue?
If not where else apart from the jndi.properties do we define queue?
Please if is possible provide me with an example of the necessary places that we define a queue.
Thank you -
Topics and Clustered Environment
Hi,
We have an application that is to be hosted on a clustered environment (2 nodes), for load balancing/fail over. This application consumes JMS messages (from Sonic JMS via Foreign Server).
During development (single node), we have had our application consuming messages from a Topic, meaning that several environments could get copies of the same message. In the clustered environment however, we would only want one of the application pair to consume and process any one message (not both).
The question is - is this possible using Topics? If so, how is it done (using either MDBs or Spring JMS)?
Another option would be to use an intermediate Queue, which consumes messages from a Topic, and the application pair then consume messages from this Queue meaning only one will get any particular message. Is this a good way to go?
If anything is not clear, please let me know and i'll try and clarify.
Thanks for any advice...Another option would be to use an intermediate Queue, which consumes messages from a Topic, and the application pair then consume messages from this Queue >meaning only one will get any particular message. Is this a good way to go?This looks feasable, only issue would be there is nothing out of the box in wls which gets the message from the remote topic to the queues. You will have to use either a message bridge or a pass thru mdb targeted on a single server to get this done. You might have to then worry about HA if this server goes down. Any how wait for Tom who might be here soon with the expert advice..
-
Service Bus Forward From Topic to Queue using wcf
I’m trying to send a message to a topic and have it forwarded to a queue (which I have a wcf service connected to the queue).
If I send the message directly to the queue it works fine, however if I send it to a topic which has a subscription that forwards it to the queue, it just sits in the queue.
Is there something I’m missing in the configuration for the wcf service to receive the forwarded messages?Doing a wcf trace I was seeing a filter mismatch. Not sure why it works when I send it directly to a queue and doesn't when it's forwarded from a topic. But by setting the AddressFitlerMode to any seemed to let me do forwarding with wcf. This
doesn't seem like the clean solution but it works for now. -
I'm running into a problem when using JMS Topics and selectors.
If I just use:
subscriber = session.createSubscriber(topic);
everything works fine.
However, if I use
subscriber = session.createSubscriber(topic, "Property = 'Value'", false);
I get an invalid topic exception from EvermindTopicSession.createSubscriber() line 84.
I'm using OC4J 9.0.3 standalone.
What might I be doing wrong?[bump]
Incidentally, I've also noticed that JMSTimestamp is not set. I've even tried setDisableTimestamp(false). The timestamp still won't be set. I can set the timestamp manually myself using setJMSTimestamp. Also, message time to live doesn't seem to work with Topics (not sure about queues).
Is this a well known problem?
Is it an OC4J problem or a JMS problem? -
How can we get Dynamic columns and data with RTF Templates in BI Publisher
How can we get Dynamic columns and data with RTf Templates.
My requirement is :
create table xxinv_item_pei_taginfo(item_id number,
Organization_id number,
item varchar2(4000),
record_type varchar2(4000),
record_value CLOB,
State varchar2(4000));
insert into xxinv_item_pei_taginfo values( 493991 ,224, '1265-D30', 'USES','fever','TX');
insert into xxinv_item_pei_taginfo values( 493991 ,224, '1265-D30', 'HOW TO USE','one tablet daily','TX');
insert into xxinv_item_pei_taginfo values( 493991 ,224, '1265-D30', 'SIDE EFFECTS','XYZ','TX');
insert into xxinv_item_pei_taginfo values( 493991 ,224, '1265-D30', 'DRUG INTERACTION','ABC','TX');
insert into xxinv_item_pei_taginfo values( 493991 ,224, '1265-D30', 'OVERDOSE','Go and see doctor','TX');
insert into xxinv_item_pei_taginfo values( 493991 ,224, '1265-D30', 'NOTES','Take after meal','TX');
select * from xxinv_item_pei_taginfo;
Item id Org Id Item Record_type Record_value State
493991 224 1265-D30 USES fever TX
493991 224 1265-D30 HOW TO USE one tablet daily TX
493991 224 1265-D30 SIDE EFFECTS XYZ TX
493991 224 1265-D30 DRUG INTERACTION ABC TX
493991 224 1265-D30 OVERDOSE Go and see doctor TX
493991 224 1265-D30 NOTES Take after meal TX
Above is my data
I have to fetch the record_type from a lookup where I can have any of the record type, sometime USES, HOW TO USE, SIDE EFFECTS and sometimes some other set of record types
In my report I have to get these record typpes as field name dynamically whichever is available in that lookup and record values against them.
its a BI Publisher report.
please suggestif you have data in db then you can create xml with needed structure
and so you can create bip report
do you have errors or .... ? -
Reading XML file into Dynamic Node and Display its output as Table.
Hi All,
Following is the output of XML file:
<Company>
<Employee>
<Name>John</Name>
<Age>23</Age>
<***>Male</***>
<Location>Frankfurt</Location>
</Employee>
<Employee>
<Name>Tina</Name>
<Age>21</Age>
<***>Female</***>
<Location>Boston</Location>
</Employee>
<Department>
<Name>Sales</Name>
<HQ>Chicago</HQ>
<Emplyoees>2300</Employees>
</Department>
I'm able to read the output through DOM parser. But How do I convert this into dynamic node and display this in Web dynpro as Table?
Any pointers in this regard will be great help?
Thanks
SrikantHi Maksim,
I've used your example and its now helping as there is kind of agreement on that I'll be knowing the structure of Xml and I can fill the nodes.
But suppose if you have Xml has following structure :
<?xml version="1.0" encoding="utf-8"?><DATA>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">CONTRACT</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">CREDIT</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">EMPRESS</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">PAYMENT</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">PRICE</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
</DATA>
How we will do in this case?
Can we have something similar using DOM? Also what is the best method for displaying data being sent in form of XML. And generalize it for cases like this.
Thanks
Srikant -
Dynamic SQL and Data with Single Quotes in it.
Hi There,
I have a problem in that I am using dynamic SQL and it happens that one of the columns does contain single quotes (') in it as part of the data. This causes the resultant dynamic SQL to get confused as the single quote that is part of the data is taken to mean end of sting, when in fact its part of the data. This leaves out a dangling single quote that was meant to enclose the string. Here is my dynamic SQL and the result of the parsed SQL that I have captured:
****Dynamic SQL*****
l_sql:='select NOTE_TEMPLATE_ID '||
'FROM TMP_NOTE_TEMPLATE_VALUES '||
'where TRIM(LEGACY_NOTE_CODE)='''||trim(fp_note_code)||''' '||
'and TRIM(DISPLAY_VALUE)='''||trim(fp_note_text)||''' ';
execute immediate l_sql INTO l_note_template_id;
Because the column DISPLAY_VALUE contains data with single quotes, the resultant SQL is:
******PARSED SQL************
select NOTE_TEMPLATE_ID
FROM TMP_NOTE_TEMPLATE_VALUES
where TRIM(LEGACY_NOTE_CODE)='INQ' and TRIM(DISPLAY_VALUE)='Cont'd'
And the problem lies with the single quote between teh characters t and d in the data field for DISPLAY_ITEM. How can I handle this?
Many thanks,I have been reliably informed that if one doesn't enclose char/varchar2 data items in quotes, the right indices may not be usedI am into oracle for past 4 years and for the first time i am hearing this.
Your reliable source is just wrong. Bind variables are variables that store your value and which are used in SQL. They are the proper way to use values in your SQL. By default all variables in PL/SQL is bind variable.
When you can do some thing in just straight SQL just do it. Dynamic SQL does not make any sense to me here.
Thanks,
Karthick.
Maybe you are looking for
-
Hiya, I've got a weird problem with my iPhone4. On the 'home page' of my iPhone the mail symbol tells me there's a new mail waiting for me. However, there's no new mail to be found. Does anyone know what the problem is? Thanks
-
Tomcat5.exe memory leak?
Hi We have an Xcelsius dashboard that once opens causes tomcat to increase in memory until it reaches about 1,200k at which time tomcat no longer services any requests. I have the latest Sp and hot fix installed for both Xcelsius and XI 3.1. If 4 pe
-
does the zen micro supports games like solitaire (etc etc) like the apple ipod? thanks!
-
Best practice: Using break statement inside for loop
Hi All, Using break statment inside FOR loop is a best practice or not? I have given some sample code: 1. With break statement 2. With some boolean variable that decide whether to come out of the loop or not. for(int i = 0; i < 10; i++){ if(i == 5){
-
JSP tag collaboration with BI Beans
Hello! We need to reorganize a dimension hierarchy in runtime during presentation. It's merely a matter of formatting. We use a tag handler that reeds its body doing some operations and puts a new content for body in page. We tried this =============