下面这个是写在main里面的一个测试类:
包jbossall-client.jar已经包含进去了
import javax.jms.*
public class SendMQ {
        public static void main (String[] args){
                QueueConnection conn = null;
                QueueSession session = null;
                
                try {
                        Properties props = new Properties();
                        props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
                        props.setProperty("java.naming.provider.url","jnp://localhost:1099");
                        props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
                
                        InitialContext ctx = new InitialContext(props);
                        
                        QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("UIL2ConnectionFactory");
                        conn = factory.createQueueConnection();
                        session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
                        Destination destination = (Queue)ctx.lookup("queue/A");
                        
                        MessageProducer producer = session.createProducer(destination);
                        
                        TextMessage msg = session.createTextMessage("这是我发送的第五个消息测试,测试jnp");
                        msg.setStringProperty("sessionID","jnp");
                        msg.setStringProperty("actionName","testAction");
                        producer.send(msg);
                        
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } 
   }
没有任何的问题,我还用hers监测到了消息,接受也没出问题。
可是我一把这个程序放到web中就出现问题:
public class UserLoginAction extends DispatchAction {
        /**
         * 处理邓录
         * @param mapping
         * @param form
         * @param request
         * @param response
         * @return
         * @throws Exception
         */
        public ActionForward login(
                ActionMapping mapping, 
                ActionForm form, 
                HttpServletRequest request, 
                HttpServletResponse response) 
                throws Exception 
        {
                // TODO Auto-generated method stub
                UserForm userform = (UserForm)form;
                
                String username = userform.getUsername();
                String password = userform.getPassword();
                
                
                /** 对username,password进行数据处理 */
                /** javaBean进行处理,查询数据库等,在此只进行打印显示在控制台上 */
                System.out.println("用户名:"+username+"\n密码:"+password);
                
                QueueConnection conn = null;
                QueueSession session = null;
                
                try {
                        Properties props = new Properties();
                        props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
                        props.setProperty("java.naming.provider.url","jnp://localhost:1099");
                        props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
                
                        InitialContext ctx = new InitialContext(props);
                        
                        QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("UIL2ConnectionFactory");
                        conn = factory.createQueueConnection();
                        session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
                        Destination destination = (Queue)ctx.lookup("queue/A");
                        
                        MessageProducer producer = session.createProducer(destination);
                        
                        TextMessage msg = session.createTextMessage("这是我发送的第三个消息测试,测试jnp");
                        msg.setStringProperty("sessionID","jnp");
                        msg.setStringProperty("actionName","testAction");
                        producer.send(msg);
                        
                } catch (NamingException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (JMSException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } finally{
                        try {
                                session.close();
                                conn.close();
                        } catch (JMSException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
                
                //成功跳转到成功信息页面
                return mapping.findForward("success");
        }
    }
用一个页面一进行测试就出现下面的异常:
包jbossall-client.jar也已经放到web-inf下面的lib中
用户名:gs
密码:sgsgs
javax.naming.CommunicationException [Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
        java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
        java.net.MalformedURLException: no protocol: 5.0/webapps/StrutsDemo/WEB-INF/classes/]
        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:722)
        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at com.demo.cht.action.UserLoginAction.login(UserLoginAction.java:68)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
不知道是不是我的配置有问题,请大家不吝赐教,小弟才刚学两天