快速实现一个基于JWS的webservice项目
A.服务器的建立
B.客户端的建立
C.wsimport的使用
D.wsdl的简单讲解
E.soap的使用
F.代码优先还是契约优先
0.新建一个bean
package com.samlai.dao;
public class User {
private Long id;
private String name;
private int age;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
1.写一个接口
package com.samlai.service;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import com.samlai.dao.User;
@WebService
public interface MyService {
/**
* 因为在webservice当中方法参数名称都是arg0,arg1较为随机的内容
* 如果需要自定义的话,写法可以如下:
* 可以在tcpMon下进行查看到对应的数值内容
* @WebResult(name="addResult")
public int add(@WebParam(name="a")int a,@WebParam(name="b")int b);
*
*/
public int add(int a,int b);
public int minute(int a,int b);
//新建一个带有对象的user的接口
@WebResult(name="getUserResult")
public User getOneUser(@WebParam(name="userName")String userName,@WebParam(name="userAge")int userAge);
}
2.实现这个接口
package com.samlai.service;
import javax.jws.WebService;
import com.samlai.dao.User;
@WebService(endpointInterface="com.samlai.service.MyService")
public class MyServiceImp implements MyService{
@Override
public int add(int a, int b) {
int c=a+b;
System.out.println(a+"+"+b+"="+c);
return c;
}
@Override
public int minute(int a, int b) {
int c=a-b;
System.out.println(a+"-"+b+"="+c);
return c;
}
@Override
public User getOneUser(String userName,int userAge) {
User user=new User();
user.setId(1L);
user.setAge(25);
user.setName("SamLai");
System.err.println(user.toString());
return user;
}
}
3.根据对应的接口进行暴露并启动对应的服务
package com.samlai.service;
import javax.xml.ws.Endpoint;
public class MyServiceOpen {
public static void main(String[] args) {
String address="http://localhost:8588/samlai";
Endpoint.publish(address, new MyServiceImp());
}
}
4.访问对应的:可以看到如下图示
http://localhost:8588/samlai?wsdl
查看对应的返回的user的接口对应的参数内容如下,访问的链接是:http://localhost:8588/samlai?xsd=1
5.进行对应的客户端来进行调用的对应的接口,局限性仅在对应的工程目录的下来实现对应的接口内容
package com.samlai.Test;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import com.samlai.service.MyService;
public class ClientTest {
public static void main(String[] args) {
//进行客户端的测试
try {
URL url=new URL("http://localhost:8588/samlai?wsdl");
QName sname=new QName("http://service.samlai.com/","MyServiceImpService");
Service service=Service.create(url,sname);
//单单仅仅这样测试,对应的接口的调用仅限此项目的调用
//根据对应的协议来实现对应的java 接口的方法
MyService ms=service.getPort(MyService.class);
System.out.println(ms.add(100, 39));
System.out.println(ms.minute(100, 39));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}