Version 3

              step 0 : remote connection authentication for two ways

               

                    *** Add unauthenticated user module

                             http://theopentutorials.com/examples/java-ee/ejb3/remote-jms-client-and-ejb3-mdb-consumer-eclipse-jboss-7-1/

                 

                  *** 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();

            }

        }

    }