继往开来 吐故纳新
日历
网志分类
· 所有网志 (1031)
· 个人作品 (64)
· 软件设计 (33)
· 面向对象编程 (22)
· JavaAPI (44)
· Java开源工具 (36)
· Swing (34)
· Java语法细节 (39)
· 样式表CSS (12)
· XML (9)
· J2EE(JavaEE) (25)
· 算法数据结构 (64)
· 正则表达式 (4)
· 软件知识 (6)
· Java线程 (9)
· Web开发.Jsp/Servlet/Struts (20)
· 程序随想录 (7)
· Hibernate (7)
· Spring (5)
· J2SE 高级 (2)
· J2SE 高级 (0)
· Web开发.Ajax (15)
· Web开发.JavaScript (48)
· DB4O (2)
· Web开发.CSS/Html (22)
· C# (20)
· ERP (4)
· JDBC (1)
· 编程资源 (16)
· 编程感悟 (29)
· DB/Sql (13)
· VB (29)
· VC (2)
· 桌面脚本 (3)
· 新兴软件 (3)
· 英语学习 (21)
· 网文转载 (164)
· 职场风云 (40)
· 诗词歌赋 (32)
· 生活感言 (79)
· 生活常识 (2)
· 奇文共赏 (14)
· 财经纵横 (11)
· 未分类 (19)
站内搜索
友情链接
· 歪酷博客
· 我的歪酷 非非共享界
· 偶要雷锋
· 豆瓣
· nczonline
· 当当网
· easyjf中文站
· Donews
· 天极Java文章列表
· W3CSchool
· taiten的BLOG
· Dojo中国
· Dojo
· Extjs.com
· Lifehack中文网志
· JaveEye的一个AS专题
· Banq's JDon
· Java 中文网址大全
· 梦想Java
· 360Doc个人图书馆
· java开源大全
· 我在硅谷动力的软件下载站
· 站长中国
· 随意贴
· CSS教学素材站
· java 参考中文站
· 面向构件与SOA社区
· 彩字生成
· 派派小说论坛
· 如坐春风
· 英语学习网
· BBC CHina
· www.dlbang.com
· 古文竖排格式在线转化工具
· 免费家谱
· 图片上传基地
· 风景壁纸
· 和风细雨
· MyC#BlogInCsdn

订阅 RSS

0391853

歪酷博客

开此博一为经验积累,二为资料收集,三为同道交流,四为资源共享.
« 上一篇: 【转载】Linux学习系列之J2EE(JAVA EE)配置指南 下一篇: 【转载】2008年值得学习的五种Java技术 »
-274°C BLOG @ 2008-07-08 12:23

转载地址:
http://www.blogjava.net/JAVA-HE/archive/2008/07/08/213203.html 

 JAVA 6.0 之后,其中JDK自带有个轻量级的web service 服务器。如果你比较细心一定发现在你安装java的路径下,有java webservice 的示例代码。

   我以前也用java开发过web service ,但是当初用了一个apache 下axis 开源项目。如果axis夜进化了,反正我不认识了。不过java自带有何必舍近求远呢。今天我就把自己创建的最简单java webservice 范例过程记录下来,与大家分享。

   我用的是netbeans 6,首先建立一个java 应用程序工程,名为WebServices。建立一个服务端程序。

package  WebServices;

import  javax.jws. * ;
import  javax.xml.ws.Endpoint;

/**
 * 
@author  hecm
 
*/
@WebService(targetNamespace 
=   " http://www.blogjava.net/JAVA-HE " , serviceName  =   " HelloService " )
public   class  WSProvider
{

   
//  @WebResult(name = "Greetings") // 自定义该方法返回值在WSDL中相关的描述    
    @WebMethod(action  =   " sayHi " , operationName  =   " sayHi " )
    
public  String sayHi(@WebParam(name  =   " MyName " ) String name)
    {
        
return   " Hi, "   +  name;  // @WebParam是自定义参数name在WSDL中相关的描述

    }

    @Oneway 
// 表明该服务方法是单向的,既没有返回值,也不应该声明检查异常

    @WebMethod(action 
=   " printSystemTime " , operationName  =   " printSystemTime " ) // 自定义该方法在WSDL中相关的描述
     public   void  printTime()
    {
        System.out.println(System.currentTimeMillis());
    }

    
public   static   void  main(String[] args)
    {
        Thread wsPublisher 
=   new  Thread( new  WSPublisher());
        wsPublisher.start();
    }

    
private   static   class  WSPublisher  implements  Runnable
    {

        
public   void  run()
        {
            
// 发布WSProvider到http: // localhost:8888/hechangmin/WSProvider这个地址,之前必须调用wsgen命令
            
// 生成服务类WSProvider的支持类,命令如下:
            
// wsgen -cp . WebServices.WSProvider
             Endpoint.publish("http://localhost:8888/JAVA-HE/WSProvider", new WSProvider());
     
}
    }
}

当然建立对应的包,就不用说了。
然后编译文件。
进入命令提示符下,进入classes目录,运行:wsgen -cp . WebServices.WSProvider

可以看到将刚才的class 生成了几个java文件和class文件。

现在要做的是发布ws到http://localhost:8888/chinajash/WSProvider
而实际上的动作就是:Endpoint.publish("http://localhost:8888/chinajash/WSProvider",new WSProvider());
当然直接运行WSProvider 。

然后输入http://localhost:8888/JAVA-HE/WSProvider?wsdl

就已经查看到生成的wsdl (webservice 描述语言)。

也就是服务端就OK了。

保持运行。编写一个测试客户端:

首先选择项目,右键新建 web服务客户端。其中ws url填入刚才生成的wsdl地址:
http://localhost:8888/JAVA-HE/WSProvider?wsdl

(实际上:和wsimport http://localhost:8888/JAVA-HE/WSProvider?wsdl 一样的效果)


产生一个效果:在classes下 按照 之前指定的名字空间产生的包下(目录结构)生成了7个帮助class。

然后我们建立一个包 client 建立测试文件:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 
*/

package  client;

import  net.blogjava.java_he. * ;
/**
 *
 * 
@author  hecm
 
*/
public   class  Test {
    
public   static   void  main(String args[])
    {
        HelloService hs 
=   new  HelloService();
        WSProvider ws 
=  hs.getWSProviderPort();
        System.out.println(ws.sayHi(
" hechangmin " ));
        ws.printSystemTime();
    }

}


运行这个测试类:
Hi,hechangmin

输出了。顺利完成!

一点个人经验,你发布的地址最好写成可配置。还有就是wsdl 中会严格按照你指定的url来访问,比如你指定的127.0.0.1 那么你用本机IP的时候也许并不能顺利访问。




评论 / 个人网页 / 扔小纸条
*昵称

已经注册过? 请登录

Email
网址
*评论