ajax 开源项目 DWR & 关于 Web Serviece 以及 Axis2 技术

时间:2021-07-08 08:53:42

ajax开源项目dwr的使用:
 利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值
 给JavaScript就好像直接本地客户端调用一样.

 1:下载dwr.jar文件,将其加入到web工程的lib下;
 2:在web.xml文件中配置如下信息:
  <servlet>
     <servlet-name>dwr-invoker</servlet-name>
     <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  </servlet>
  <servlet-mapping>
     <servlet-name>dwr-invoker</servlet-name>
   <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>
    其中url-pattern中必须配置为 “/dwr/* ”,不能为工程的名称!!
 
 3:在web.xml同级中增加文件dwr.xml,此文件是javaScript中调用的方法,影射到class类
  例如:
   <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr//dwr20.dtd">
  <dwr>
   <!-- without allow, DWR isn't allowed to do anything -->
     <allow>
       <create creator="new" javascript="MyTest" scope="application">
          <param name="class" value="com.test.ajax.DWRTest"/>
       </create>
       <create scope="application" creator="new" javascript="showData">
        <param name="class" value="com.test.ajax.HelloName"/>
       </create>
     </allow>
  </dwr>
 在allow节点中定义要影射的class类,并且给其class类起一个javaScript的名字,以便在
 javaScript中调用。
 
 4:然后定义class文件
  package com.test.ajax;
  public class DWRTest
  {
   public DWRTest(){
     
    }
    public String getMyName(){
     return "hello_ajax";
    }
  }
  
  /**
  *---------------------------------------------------
  **/
  package com.test.ajax;
  public class HelloName
  {
   private String userName ;
   public HelloName(){  
   }
   /**
    * @return Returns the userName.
    */
   public String getUserName()
   {
    return "helloTest";
   }
   /**
    * @param userName The userName to set.
    */
   public void setUserName(String userName)
   {
    this.userName = userName;
   }
  }
 5: 这时就可以在html或jsp中调用此class文件了,调用方式如下
  一下为测试的 html文件
    
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
   <html>
   <head>
     <title>DWR - My First AJAX</title>
     <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
     <script type='text/javascript' src='dwr/interface/MyTest.js'></script>
     <script type='text/javascript' src='dwr/interface/showData.js'></script>
     <script type='text/javascript' src='dwr/engine.js'></script>
     <script type='text/javascript' src='dwr/util.js'></script>
     <script language="javascript">
      var mycall=function callBack(data){
      DWRUtil.setValue("demo1",data);
      DWRUtil.setValue("demo2","leo_wang");
      DWRUtil.setValue("userName",data);
      }
      function showMyName(){
       //MyTest.getMyName(mycall);
       showData.getUserName(mycall);
      }
   
      function clearName(){
       demo1.value="";
       demo2.value="";
      }
     </script>
     </head>
   <body>
   <h1>Ajax Test Page</h1>
   <input type="button" value="setMyName" onclick="javascript:showMyName()">
   <input type="button" value="Clear" onclick="javascript:clearName()"><br>
   <input type="text" id="demo1">
   <input type="text" id="demo2">
   <input type="test" id="userName">userName
   </body></html>

  在调用javaScript前要先引入刚才在dwr.xml中定义的javaScript
  <script type='text/javascript' src='dwr/interface/MyTest.js'></script>
  <script type='text/javascript' src='dwr/interface/showData.js'></script>
  <script type='text/javascript' src='dwr/engine.js'></script>
  <script type='text/javascript' src='dwr/util.js'></script>
  前面两行是我们刚才定义的javaScript的引入,后面两行是dwr中的本身定义的javaScript
  
  ok(完)
本人的公司在最近的一个金融项目上用到了AXIS2 1.0版,在Tomcat上部署AXIS2,用来发布Web Services
我下载了AXIS2 1.0 的 War发布包 成功的安装了AXIS2并且发布了一些Web Services。

我了解到现在很多同仁都曾经用过或将要用到AXIS2技术开发Web Services,为了给更多的想要了解AXIS2
技术的人提供方便,鉴于个人的能力和知识有限,我制造此贴并热情的邀请使用过AXIS的同仁们能来此发表你们的心得和看法。

以下是我发布一个简单的Web Services的过程跟大家分享:
一 .  从www.Apache.org下载Axis2的War发布包并解压缩到D:/Axis2。

二 .  将整个Axis2目录都复制到 D:/Tomcat 5.5/webapps 目录下。(我的Tomcat装在D盘D:/Tomcat 5.5目录下,以下目录问题我将不多解释,大家应该能看得明白)

三 .  在D:/Tomcat 5.5/conf/Catalina/localhost目录下创建配置文件axis2.xml, 文件内容如下:
<Context path="/axis2" reloadable="true" docBase="D:/Tomcat 5.5/webapps/Axis2/axis2-web" />

四 .  此时已经把Axis2安装到Tomcat上了,下面启动Tomcat在IE中输入
"http://localhost:8080/Axis2"来验证一下!(出来的画面有Axis标题)

五 .下面开使来发布一个简单的Web Services(关键是需要打包成.aar格式)
      (1)创建Web服务的工作类MyService.java,例如:
public class MyService{
    public void ping(OMElement element){
     ......  //这是一个用来获取对方地址的Web服务方法
    }
    public OMElement echo(OMElement element){
     ......  //这是一个发送请求并返回结果的Web服务方法
    }
}
      (2)写配置文件services.xml:
<service >
    <description>
        This is a sample Web Service with two operations, echo and ping.
    </description>
    <parameter name="ServiceClass" locked="false">AxisDemo.MyService</parameter>
    <operation name="echo">
        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
        <actionMapping>urn:echo</actionMapping>
    </operation>
     <operation name="ping">
        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
        <actionMapping>urn:ping</actionMapping>
    </operation>
</service>
      (3)做到这里就可以打包发布了,有人会问,把我这两个文件放到一个自己建的文件夹然后打包吗?我想那样做可能也可以,但是我推荐还是用这样一个包结构比较好(由于图示考到回复文本框中后显示空白我只好口头描述了):
          a.先在D:盘中建一个文件夹AxisDemo
          b.在AxisDemo下面建一个文件夹META-INF,并把MyService.java放在这里
          c.在META-INF下放配置文件services.xml

六 .  打包、发布:
      1.在你的Windows开始菜单中点击"运行",输入cmd命令打开命令操作器,在命令操作器中输入cd/命令退到C:>  (根目录),再输入D:转到D:> (我们的AxisDemo就在D:盘中,我们要将文件夹中的东东打包)
      2.然后输入打包命令:
jar cvf MyService.aar example1/. (千万不要丢了最后那个点啊),此时你会发现D:盘下生成了一个AxisDemo.aar文件 (打包完成)
      3.把这个文件Cope到 D:/Tomcat 5.5/webapps/Axis2/WEB-INF/services/ 下面,重启你的Tomcat服务然后在IE中输入"http://localhost:8080/Axis2",点击那个Services链接吧,你就可以看到你刚发布的名为MyService的Web服务了(从此由你提供的Web服务就这样一个一个成功发布)。

DWR 用xom,dom4j传输xml数据的Bug。

在用DWR传输xml文档(document)或者节点(Element)的时候,由于DWR对于Firefox的支持度比IE好的原因,在FireFox下面能正常运行,在IE下会报[Ojbect Error]。我用DWR1.1和DWR M2两个版本都进行了测试,都会报出同样的错误。

关于这个错误,我已经和DWR的作者joe walker通过user-list联系过,他表示由于时间的问题,在ie下面的确有一些bug没有来得及处理。

我个人是很希望他能抽出时间来解决这个问题的,因为我现在做的web项目很想利用dwr,也很需要xml的处理,最为关键的是一定要在ie下面使用,我的用户是基本上只使用ie的,他们中有听说过firefox的就算是很不错的了。

[先留个位置在这里,等joe的最后回复收到以后把mail贴出来。]

目前的ajax框架中DWR的文档是做的比较好的,这也有利于广大的开发者。
DWR 官方站点:
http://getahead.ltd.uk/dwr/

DWR User-list(作者会经常对在这里提出的问题进行回答,目前已经有约5000条记录):
http://news.gmane.org/gmane.comp.java.dwr.user
developerWorks 中国网站 Web 服务专区:
http://www-900.ibm.com/developerWorks/cn/webservices/index.shtml
Java Web Services 的中文教程
http://gceclub.sun.com.cn/NASApp/sme/controller/bottomlearning?cat_id=010103

http://www.ws-i.org/

http://www-106.ibm.com/developerworks/webservices/
http://www.w3.org/2002/ws/
http://www.webservices.org/
http://www.webservicesarchitect.com/
http://msdn.microsoft.com/webservices
http://www.soapware.org
http://www.soaprpc.com
http://java.sun.com/webservices
http://www.xmethods.com/
http://hosting.msugs.ch/eyesoft/index.htm
http://www.webservices.org/
http://www.salcentral.com/salnet/webserviceswsdl.asp
http://www.learnxmlws.com/
http://searchwebservices.techtarget.com/
http://forum.uddi-china.org/
http://www.soapwebservices.com/
http://soapagent.com/
http://www.soapclient.com/
http://www.soapware.org/

(如果还有好的网站也请大家补充)