Thanks to Edwin for good work.
JMS is a bit different in JDeveloper 11G and WebLogic 10.3 then when you use OC4J 10.1.3. This blog will show you how you can create a Queue and Connection Factory in WebLogic and use this in one of your JDeveloper 11g projects.
First you have to add two libraries to the project, The first is the AQJMS library ( even when we don't use AQ ) and the second library is the WebLogic 10.3 thin Client
Start the weblogic server. Menu Run , Start Server Instance
The url is http://localhost:7101/console. Username weblogic password weblogic.
Default the weblogic server has an empty configuration. We need to create a new jms server with a database of file persistance. We need this for the queue or topic persistence
create a new jms system module. In this module we will create a new connection factory and queue
Select the just created jms module and create a new connection factory first.
Create a new queue
Make sure that the queue uses the jms server. See the targets this can't be empty
And here is the java code to test the connection factory and the queue
The difference with oc4j is that you use other jndi properties. This are the right properties for WebLogic 10.3 in JDeveloper 11g
java.naming.factory.initial weblogic.jndi.WLInitialContextFactory
java.naming.provider.url t3://localhost:7101
java.naming.security.principal weblogic
java.naming.security.credentials weblogic
- package nl.ordina.jms;
-
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.sql.Timestamp;
- import java.util.Properties;
- import javax.jms.JMSException;
- import javax.jms.Queue;
- import javax.jms.QueueConnection;
- import javax.jms.QueueConnectionFactory;
- import javax.jms.QueueReceiver;
- import javax.jms.QueueSender;
- import javax.jms.QueueSession;
- import javax.jms.Session;
- import javax.jms.TextMessage;
- import javax.naming.Context;
- import javax.naming.InitialContext;
-
- public class WeblogicClient {
-
- private QueueConnection connection = null;
- private QueueSession session = null;
- private QueueSender sender = null;
- private QueueReceiver receiver = null;
- private Queue queue = null;
- private long waitTime = 0;
-
-
- public WeblogicClient() {
- setUp();
- put();
- get();
- tearDown();
- }
-
- public static void main(String[] args) {
- WeblogicClient weblogicClient = new WeblogicClient();
- }
-
- public void tearDown() {
- try {
- sender.close();
- receiver.close();
- session.close();
- connection.close();
-
- } catch (JMSException je) {
- je.printStackTrace();
- } finally {
- }
- }
-
- public void get(){
- try {
- javax.jms.TextMessage textMessage = (javax.jms.TextMessage)receiver.receive();
- System.out.println("Receiving message [" + textMessage.getJMSMessageID() + "] enqueued at " + new Timestamp(textMessage.getJMSTimestamp()).toString());
- String xmlText = textMessage.getText();
- System.out.println(xmlText);
- } catch (JMSException jmse) {
- jmse.printStackTrace();
- }
- }
-
- public void put(){
- String messageId = null;
- String xmlData = "";
- FileInputStream fis;
- try {
- fis = new FileInputStream("D:\\projecten\\mhs_esb\\delfor.xml");
- int x= fis.available();
- byte b[]= new byte[x];
- fis.read(b);
- xmlData = new String(b);
- } catch (FileNotFoundException e) {
- // TODO
- } catch (IOException e) {
- // TODO
- }
- try {
- TextMessage message = session.createTextMessage(xmlData);
- sender.send(message);
- } catch (JMSException jmse) {
- jmse.printStackTrace();
- }
- }
-
- protected void setUp() {
-
- String queueName = "jms/QTest";
- String queueConnectionFactoryName = "jms/CFTest";
- Context ctx;
-
- try {
- Properties parm = new Properties();
- parm.setProperty("java.naming.factory.initial","weblogic.jndi.WLInitialContextFactory");
- parm.setProperty("java.naming.provider.url","t3://localhost:7101");
- parm.setProperty("java.naming.security.principal","weblogic");
- parm.setProperty("java.naming.security.credentials","weblogic");
-
- ctx = new InitialContext(parm);
-
- QueueConnectionFactory connectionFactory =
- (QueueConnectionFactory)ctx.lookup(queueConnectionFactoryName);
-
- connection = connectionFactory.createQueueConnection();
- connection.start();
- session = connection.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);
- queue = (Queue)ctx.lookup(queueName);
- sender = session.createSender(queue);
- receiver = session.createReceiver(queue);
-
-
- } catch (JMSException je) {
- throw new RuntimeException("Fout opgetreden bij het starten ",je);
- } catch (Throwable t) {
- throw new RuntimeException("Fout opgetreden bij het starten ",t);
-
- }
- }
-
- }