step 0 : remote connection authentication for two ways
*** Add unauthenticated user module
*** Add authenticated user module
go to next .....step....
step 1 : add
<jms-queue name="MyQueue">
<entry name="queue/MyQueue"/>
<entry name="java:jboss/exported/queue/MyQueue"/>
</jms-queue>
using JMS queue ------------- queue/MyQueue
java:jboss/exported/ -------------- Remote JMS conection / no need for local
step 2 : add application user in jboss7
ApplicationRealm
testuser2
testpassword2
testroles
step 3 : permission for remote jms
<security-settings>
<security-setting match="#">
<permission type="send" roles="testroles guest"/>
<permission type="consume" roles="testroles guest"/>
<permission type="createNonDurableQueue" roles="testroles guest"/>
<permission type="deleteNonDurableQueue" roles="testroles guest"/>
</security-setting>
</security-settings>
step 4 : JMS remote connection
final Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.naming.remote.client.InitialContextFactory");
env.put(Context.PROVIDER_URL, "remote://localhost:4447");
env.put(Context.SECURITY_PRINCIPAL, "testuser2");
env.put(Context.SECURITY_CREDENTIALS, "testpassword2");
Context remoteContext = new InitialContext(env);
ConnectionFactory factory = (ConnectionFactory) remoteContext.lookup("jms/RemoteConnectionFactory");
Queue queue = (Queue) remoteContext.lookup("queue/MyQueue");
step 5 : full example is
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
com.southtech.daytrader.jboss
import java.util.Properties;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.southetech.jboss.Employee;
public class SouthtechJmsClient{
public static void main(String[] args) {
Connection connection;
try {
final Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.naming.remote.client.InitialContextFactory");
env.put(Context.PROVIDER_URL, "remote://localhost:4447");
env.put(Context.SECURITY_PRINCIPAL, "testuser2");
env.put(Context.SECURITY_CREDENTIALS, "testpassword2");
Context remoteContext = new InitialContext(env);
ConnectionFactory factory = (ConnectionFactory) remoteContext.lookup("jms/RemoteConnectionFactory");
Queue queue = (Queue) remoteContext.lookup("queue/MyQueue");
connection = factory.createConnection("testuser2", "testpassword2");
Session session = connection.createSession(false,QueueSession.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(queue);
TextMessage message = session.createTextMessage();
message.setText("Hello EJB3 MDB Queue!!!");
producer.send(message);
ObjectMessage objMsg = session.createObjectMessage();
Employee employee = new Employee();
employee.setId(2163);
employee.setName("Gulam");
employee.setDesignation("Samdani");
employee.setSalary(10);
objMsg.setObject(employee);
producer.send(objMsg);
System.out.println("2. Sent ObjectMessage to the Queue");
System.out.println("----------------working ------------------------ok--------------------------"); |
session.close();
} catch (JMSException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
}
}
Comments