Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6922736
  • 博文数量: 700
  • 博客积分: 10821
  • 博客等级: 上将
  • 技术积分: 12011
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-02 10:41
个人简介

大数据、ML、AI、云计算openstack、Linux、SpringCloud。

文章分类

全部博文(700)

分类: Java

2013-11-29 20:56:45

以前因为公司只用websphere,所以也就只对websphere略有了解。只把它当做工具,也没充分了解。忽一日知道有些模样的网站都在自己做webservice,就花了一些时间学习了一下。班门弄斧,抛砖引玉吧。

因为web的Http服务实际上就是请求和响应的交互,即service和client端的交互。
先建服务器端目录:webService
服务器端的类HelloWorld.java

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService(targetNamespace = "")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class HelloWorld {
    @WebMethod(action="toSayHello",operationName="toSayHello",exclude=false)
    @WebResult(name="returnWord")//自定荵芽??方法返回蛟?在WSDL中相蜈?的描述
    public String sayHello(@WebParam(name="userName")String userName) {
        return"Hello :" + userName;
    }
    @WebMethod
    public int getExp(int i, int j) {
        return i / j;
    }

    // wsgen -cp ./bin -r ./wsdl -s ./src -d ./bin -wsdl atest.webService.HelloWorld
}

当前目录下面编译一下:
javac HelloWorld.java

建3个目录:src,bin,wsdl
执行以下命令行语句:
wsgen -cp ./ -r ./wsdl -s ./src -d ./bin -wsdl HelloWorld

编写StartService.java(webservice启动器)
import javax.xml.ws.Endpoint;
 
public class StartService {
    public static void main(String[] args) {
        Endpoint.publish("", new HelloWorld());
    }
}

编译 javac StartService.java
启动服务:
java StartService
1:可以用jconsole查看服务是否启动。
2:也可以在浏览器地址栏中输入:
   会显示:

Web Services

No JAX-WS context information available.
http://hiyachen.blog.chinaunix.net
3:
   如果 一个XML文件显示,OK,已经启动。

服务器,其实已经做好了。简单吧。
下面做客户端:
建客户端目录client,当然也可以换台机器来做,更形象。
重新用cmd起一个命令行容器。
同样建3个目录:src,bin,wsdl
wsimport  -d  ./bin  -s  ./src -p client
parsing WSDL...
generating code...
compiling code...

会生成2个文件:HelloWorld.java   HelloWorldService.java
移到client根目录下。编译一下。
编写文件:ClientRun.java
public class ClientRun {
 
    /**
    
     */
    public static void main(String[] args) {
        HelloWorldService hws = new HelloWorldService();
        HelloWorld hw = hws.getHelloWorldPort();
        System.out.println(hw.getExp(9, 3));
        System.out.println(hw.toSayHello("hiyachen"));
    }
 
}编译 javac ClientRun.java
运行:java ClientRun
以下结果就OK了.
3

Hello:hiyachen

环境:
JDK6,soap1.1,wsdl,annotation

webservice其实也不难,再用上java的servlet类,就可以编出个tomcat了。
加上socket的 

Socket client = new Socket("127.0.01.", 80);  //客户端向port:80发送请求

ServerSocket server = new ServerSocket(80); //服务器监听port:80的请求。


关于webservice的一些词汇和注视的解释,请读:
自己动手做一个WebService (2)



 

阅读(4846) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~