Comet框架Plushlet使用中的问题

来源:互联网 发布:费米估算法百度百科 编辑:程序博客网 时间:2024/06/11 17:54

Plushlet相关介绍不再扯淡

 

我在将Plushlet集成到我的Web项目中时出现了 [pushlet] problem retrieving XML data: 这个状态栏提示错误

经过对比和调试,发现一些问题总结下来提供参考

 

第一:

我对比了一下Plushlet提供的示例工程和在MyEclipse上创建的工程发现他们的 web.xml 头信息配置有所不同!

Xml代码  收藏代码
  1. <!DOCTYPE web-app  
  2.     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
  3.     "http://java.sun.com/dtd/web-app_2_3.dtd">  

 

而创建的工程配置的是

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  

 

很由于在这个配置文件只需要配置一个Servlet,所以我们应该保持下面的内容,而不是用示例工程的配置文件头

 

第二:

其次,在他的 ajax-pushlet-client.js 脚本中,不知道是环境原因还是写法原因,有一段脚本是有问题的,他会造成你的请求路径错误!

我看了一下原来JS文件中的初始化方法

Java代码  收藏代码
  1. _init: function () {  
  2.     PL._showStatus();  
  3.     PL._setStatus('initializing...');  
  4.     /* 
  5.         Setup Cross-Browser XMLHttpRequest v1.2 
  6.        Emulate Gecko 'XMLHttpRequest()' functionality in IE and Opera. Opera requires 
  7.        the Sun Java Runtime Environment <http://www.java.com/>. 
  8.  
  9.        by Andrew Gregory 
  10.        http://www.scss.com.au/family/andrew/webdesign/xmlhttprequest/ 
  11.  
  12.        This work is licensed under the Creative Commons Attribution License. To view a 
  13.        copy of this license, visit http://creativecommons.org/licenses/by-sa/2.5/ or 
  14.        send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 
  15.        94305, USA. 
  16.  
  17.        */  
  18.     // IE support  
  19.     if (window.ActiveXObject && !window.XMLHttpRequest) {  
  20.         window.XMLHttpRequest = function() {  
  21.             var msxmls = new Array(  
  22.                     'Msxml2.XMLHTTP.5.0',  
  23.                     'Msxml2.XMLHTTP.4.0',  
  24.                     'Msxml2.XMLHTTP.3.0',  
  25.                     'Msxml2.XMLHTTP',  
  26.                     'Microsoft.XMLHTTP');  
  27.             for (var i = 0; i < msxmls.length; i++) {  
  28.                 try {  
  29.                     return new ActiveXObject(msxmls[i]);  
  30.                 } catch (e) {  
  31.                 }  
  32.             }  
  33.             return null;  
  34.         };  
  35.     }  
  36.   
  37.     // ActiveXObject emulation  
  38.     if (!window.ActiveXObject && window.XMLHttpRequest) {  
  39.         window.ActiveXObject = function(type) {  
  40.             switch (type.toLowerCase()) {  
  41.                 case 'microsoft.xmlhttp':  
  42.                 case 'msxml2.xmlhttp':  
  43.                 case 'msxml2.xmlhttp.3.0':  
  44.                 case 'msxml2.xmlhttp.4.0':  
  45.                 case 'msxml2.xmlhttp.5.0':  
  46.                     return new XMLHttpRequest();  
  47.             }  
  48.             return null;  
  49.         };  
  50.     }  
  51.   
  52.     PL.pushletURL = PL._getWebRoot() + 'pushlet.srv';  
  53.     PL._setStatus('initialized');  
  54.     PL.state = PL.STATE_READY;  
  55. },  

 

PL.pushletURL是我们请求的路径,而方法 PL._getWebRoot() 由于页面写法各尽不同,有时取到的是 null,这样你的请求路径会有问题,造成无法请求!

 

我把这行代码改为了不需要从方法再取得根路径

Java代码  收藏代码
  1. PL.pushletURL = 'pushlet.srv';  

 

第三:

在你的JSP页面中,如果你没有写

Java代码  收藏代码
  1. <base href="<%=basePath%>">   

 

这个标签,那么就算你其他正常,他也会提示无法取得数据!


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* csdn 横中 */google_ad_slot = "7877933139";google_ad_width = 468;google_ad_height = 60;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击