一、首先介绍一个简单的WebService的开发
1. 新建一个java工程
2. 服务端代码如下:(图片显示的是代码和目录结构,可以跳过哈......)
package com.summary;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
/**
* WebService服务端:AAAAA
*/
@WebService // 声明这是一个webservice类
public class AAAAA {
@WebMethod // 声明这是一个webservice方法
public int squrad(int x){
return x * x;
}
public static void main(String[] args) {
// 发布接口
Endpoint.publish("http://localhost:8080/webservice_server", new AAAAA());
}
}
3. 服务端代码编写好之后直接运行。(运行之后不要关闭,下面的步骤需要服务端处于运行状态)
4. 打开浏览器(输入自己发布的接口,后面跟上“?wsdl”)
http://localhost:8080/webservice_server?wsdl
如果浏览器显示出类似xml的文件,则正确
如果报错,则以上的步骤中有错,嘿嘿,,,重新来过吧,,,
5. 如果第4步没有问题,现在打开dos窗口
切换到c盘根目录(什么目录口可以,没有要求。我切换到c盘根目录是为了方便找到,嘿嘿,我很懒)
输入以下:
wsimport -keep -p com.summary http://localhost:8080/webservice_server?wsdl
如图,即为成功
-keep:是保留源码的意思
-p:是存储路径
6. 现在打开c盘的com.summary 目录,可以看到
看到就好,在后面的客户端中需要使用....
7. 现在重新创建一个java工程(随意起一个,不重要,嘿嘿..... 要想看一下直观的效果,看第2步的目录结构)
8. 将第6步中的.java代码全部放到新的工程中
9. 然后新建一个类(BBBBB)
10. 客户端代码如下:
package com.summary;
/**
* WebService客户端 :BBBBB
*/
public class BBBBB {
public static void main(String[] args) {
// 思路: 观察生成的类,AAAAAService中有一个方法返回AAAAA,即可 AAAAA.squrad()
AAAAA aaaaa = new AAAAAService().getAAAAAPort();
System.out.println(aaaaa.squrad(3));
}
}
11. 现在直接运行客户端的程序就好了......
webService应用于实际工作中
二. 其次,我们看Spring和WebService的整合
1. 在原有的项目的Spring配置文件中,引入一个Spring与WebService整合的bean文件
<!-- Spring和WebService整合:对外提供一个简单的WebService出 口 -->
<bean class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter">
<property name="baseAddress" value="http://localhost:8080/ws" />
</bean>
2. 在原有的项目中新建一个文件夹(即功能模块,不是必须的,为了让目录结构更清晰......)
3.编写服务端的代码,如下
/**
* WebService服务端
*/
@WebService
@Component
public class UserService {
@Autowired // 注入接口
private IUserService userService;
// 对外提供的方法:获取cms系统中的用户信息
public String queryUser(String id, String name) {
UserCond cond = new UserCond();
// 判断参数.拼接条件
if (id != null && id != "") {
cond.setId_c(id);
}
if (name != null && name != "") {
cond.setName_c(name);
}
// 查询
List<User> userList = userService.queryAllObj(cond);
// 拼接xml格式,(也可以拼接其他格式的数据)
StringBuilder xml = new StringBuilder();
xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
xml.append("<users>\r\n");
for (User user : userList) {
xml.append("\t<user>\r\n");
xml.append("\t\t<id>" + user.getId() + "</id>\r\n");
xml.append("\t\t<name>" + user.getName() + "</name>\r\n");
xml.append("\t\t<age>" + user.getDept_id() + "</age>\r\n");
xml.append("\t</user>\r\n");
}
xml.append("</users>\r\n");
return xml.toString();
}
}
3. 按照你项目的启动方式启动就可以了
(写第2步,主要就是给大家看一下,里面没有了@WebMethod注释,也没有了main(),对外提供的端口,被移到了Spring的配置文件中了)
4. 接下来就按照最上面的(java工程)的第4步往后面走就可以了.......嘿嘿