/*
* JORAM: Java(TM) Open Reliable Asynchronous Messaging
* Copyright (C) 2007 ScalAgent Distributed Technologies
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Initial developer(s): BADOLLE Fabien ( ScalAgent Distributed Technologies )
* Contributor(s):
*/
package connector;
import javax.jms.Queue;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.naming.Context;
import javax.naming.InitialContext;
import org.objectweb.joram.client.connector.ActivationSpecImpl;
import org.objectweb.joram.client.connector.JoramAdapter;
import org.objectweb.joram.client.connector.ManagedConnectionFactoryImpl;
import org.objectweb.joram.client.connector.ManagedConnectionImpl;
import org.objectweb.joram.client.connector.OutboundConnection;
import org.objectweb.joram.client.connector.OutboundConsumer;
import org.objectweb.joram.client.connector.OutboundProducer;
import org.objectweb.joram.client.connector.OutboundSession;
public class Connector {
public static void main(String[] args) throws Exception {
JWorkManager jw = new JWorkManager(1,4,5000);
ResourceBootstrapContext bt=new ResourceBootstrapContext(jw);
System.out.println("JoramAdapter ...");
JoramAdapter ja= new JoramAdapter() ;
ja.start(bt);
System.out.println("start ...");
Context ictx = new InitialContext();
Queue queue = (Queue) ictx.lookup("queue");
Topic topic = (Topic) ictx.lookup("topic");
ictx.close();
ManagedConnectionFactoryImpl mcf = new ManagedConnectionFactoryImpl();
mcf.setResourceAdapter(ja);
System.out.println("ManagedConnectionFactoryImpl ok");
ManagedConnectionImpl mci = (ManagedConnectionImpl) mcf.createManagedConnection(null,null);
System.out.println("ManagedConnectionImpl ok");
OutboundConnection oc = (OutboundConnection) mci.getConnection(null,null);
System.out.println("OutboundConnection ok");
final OutboundSession os =(OutboundSession) oc.createSession(false,1);
System.out.println("OutboundSession ok");
final OutboundProducer prod = (OutboundProducer) os.createProducer(queue);
final OutboundProducer prod1 = (OutboundProducer) os.createProducer(topic);
System.out.println("OutboundProducer ok");
OutboundConsumer cons = (OutboundConsumer) os.createConsumer(queue);
OutboundConsumer cons1 = (OutboundConsumer) os.createConsumer(topic);
System.out.println("OutboundConsumer ok");
oc.start();
System.out.println();
System.out.println("Without MessageListener");
TextMessage msg = os.createTextMessage("avec queue");
prod.send(msg);
TextMessage msg1 =(TextMessage) cons.receive();
System.out.println("msg receive :"+msg1.getText());
System.out.println();
System.out.println("With MessageListener");
MessagePointFactory mep = new MessagePointFactory();
ActivationSpecImpl spec = new ActivationSpecImpl();
spec.setResourceAdapter(ja);
spec.setDestinationType("javax.jms.Queue");
spec.setDestination("queue");
MessagePointFactory mep2 = new MessagePointFactory();
ActivationSpecImpl spec2 = new ActivationSpecImpl();
spec2.setResourceAdapter(ja);
spec2.setDestinationType("javax.jms.Topic");
spec2.setDestination("topic");
ja.endpointActivation(mep , spec); // listener on queue
ja.endpointActivation(mep2 , spec2);// listener on topic
System.out.println("new thread producer on queue");
new Thread() {
public void run() {
int i = 0;
try {
while(i!=100){
i++;
TextMessage msg = os.createTextMessage("with queue "+i);
prod.send(msg);
}
} catch (Exception exc) {
}
}
}.start();
System.out.println("new thread producer on topic");
new Thread() {
public void run() {
int i = 0;
try {
while(i!=100){
i++;
TextMessage msg = os.createTextMessage("with topic2 "+i);
prod1.send(msg);
}
} catch (Exception exc) {
}
}
}.start();
System.out.println("wait receive, press a key to exit");
System.in.read();
ja.stop();
System.out.println("stop");
System.exit(0);
}
}