"B頁面不需要刷新就可以接收到該信息"
是不可能实现的,问题是怎样使b浏览器刷新,目前好像只能用时间间隔控制。
当然你也可以为这个应用单独开发个浏览器用点对点通讯(socket)发送信息
是不可能实现的,问题是怎样使b浏览器刷新,目前好像只能用时间间隔控制。
当然你也可以为这个应用单独开发个浏览器用点对点通讯(socket)发送信息
解决方案 »
- Struts传递参数问题?
- 关于struts中<html:form>和param标记问题
- 我想做这样一个功能,做一个网站会员登陆 登出时间记录的一个报表
- 如何获取服务器端特定目录下的文件(在线等!!)
- 关于hibernate自增涨主键的问题
- 冒昧问一句,什么是JAVA框架??
- 数据库中varchar类型的汉字转化为java中string以后在web中显示乱码
- 谁能推荐一本关于IntelliJ IDEA 的书啊!!
- 如何用jsp+xml令网页中美工与程序完全分离?
- 使用完ejb对象,快速释放出它占用的空间,而不删除数据库记录,是用的那条语句?
- webservice\websphere\weblogic都是些什么东西啊?
- 做JAVA程序好命苦,随便说说,不给分
我很久以前试过,好像是可以的
下面我把我的想法簡單的說以下;
A頁面(是個Servlet)
簡單的向一個JMS的消息對列Queue發送信息
B頁面(是個Servlet)負責從Queue中接收信息 如下:
package examples.jms.sender;import java.io.*;
import javax.naming.*;
import javax.jms.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;public class Receiver extends HttpServlet implements MessageListener
{ String msgText; public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory"; public final static String JMS_FACTORY="weblogic.examples.jms.QueueConnectionFactory";
public final static String QUEUE="weblogic.examples.jms.exampleQueue";
HttpServletRequest thisReq=null;
HttpServletResponse thisRes=null;
private QueueConnectionFactory qconFactory;
private QueueConnection qcon;
private QueueSession qsession;
private QueueReceiver qreceiver;
private Queue queue;
private boolean quit = false;
private PrintWriter out=null; public void init(ServletConfig config) throws ServletException
{
super.init(config);
System.out.println("init has been Called");
try{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, "t3://127.0.0.1:7001"); InitialContext ctx = new InitialContext(env);
qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
qcon = qconFactory.createQueueConnection();
qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queue = (Queue) ctx.lookup(QUEUE);
qreceiver = qsession.createReceiver(queue);
qreceiver.setMessageListener(this);
qcon.start();
}catch(Exception e){
System.out.println(e.getMessage());
}
} public void service(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException
{
System.out.println("service has been called");
res.setContentType("text/html");
if(out == null)
out = res.getWriter();
out.println(msgText);
}
public void onMessage(Message msg){
try{
System.out.println("Has Message Arrive");
if(msg instanceof TextMessage){
msgText = ((TextMessage)msg).getText();
}else{
msgText = msg.toString();
}
if(out != null){
System.out.println("Message has push to anthor Servlet!");
out.println(msgText);
}else{
System.out.println("Can not find outputStream For anotherServlet");
}
}catch(JMSException jmse){
jmse.printStackTrace();
}catch(Exception e){
System.out.println("Note Exception:"+e.getMessage());
}
}
}在WebLogic發布後A B 都可以運行,而且當A頁面發送一個信息後在weblogic的服務器窗口中,也可看到
有;Message has push to anthor Servlet!輸出(B Servlet輸出),但就是B頁面的內容不會改變
是不可能实现的,问题是怎样使b浏览器刷新,目前好像只能用时间间隔控制。
当然你也可以为这个应用单独开发个浏览器用点对点通讯(socket)发送信息
當然可以在while中採用sleep 可以有所改善但大家有沒有更好的想法謝謝!!!