1.开发服务端
1.1.Order.java //是实体类
1.2.OrderService.java //服务接口
1.3.OrderServiceBean.java //服务接口的实现类
1.4.build.xml //ant的部署文件
2.开发客户端
2.1.OrderTest.java //juit测试类
2.2.build.xml //Ant任务类生成webservice辅助类
2.3需要jax2.1的jar文件支持,http://dldx.csdn.net/fd.php?i=987830727246899&s=55184deee4b4aa959bb33700d85ddc98
3.发布WebService.jar到jboss下
4.查看jboss中的webservice http://localhost:8080/jbossws/中View a list of deployed services 选项就可以看到自己的web service了
Order.java
package cn.cmcc.bean;
import java.io.Serializable;
public class Order implements Serializable{
/**
*
*/
private static final long serialVersionUID = -1037122931899348746L;
private String orderId;
private String name;
public Order(){}
public Order(String orderId, String name) {
super();
this.orderId = orderId;
this.name = name;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
OrderService.java
package cn.cmcc.service;
import java.util.List;
import cn.cmcc.bean.Order;
public interface OrderService {
public Order getOrder(String orderId);
public List<Order> getOrders();
public String getName(String name);
}
OrderServiceBean.java
package cn.cmcc.service.impl;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.jws.WebService;
import cn.cmcc.bean.Order;
import cn.cmcc.service.OrderService;
@WebService(
name = "OrderService", //接口名
serviceName = "OrderServiceBean", //接口实现名
targetNamespace = "http://www.cmcc.cn") //命名空间
@Stateless
@Remote
public class OrderServiceBean implements OrderService{
@Override
public String getName(String name) {
return name;
}
@Override
public Order getOrder(String orderId) {
Order order =new Order();
order.setName("zhangsan");
order.setOrderId(orderId);
return order;
}
@Override
public List<Order> getOrders() {
List<Order> list=new ArrayList<Order>();
Order order =new Order();
order.setName("zhangsan");
order.setOrderId("1");
list.add(order);
order =new Order();
order.setName("lisi");
order.setOrderId("2");
list.add(order);
return list;
}
}
build.xml //服务端的ant 的build文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- 描述一个工程,工程名为"HelloWorld",该工程位于与build.xml文件同一目录之中 -->
<project name="WebService" basedir=".">
<!-- 创建一个属性,该属性的值是工程下的src目录 -->
<property name="src.dir" value="${basedir}\src" />
<!-- 创建一个属性,该属性指向系统环境变量 -->
<property environment="env" />
<!-- 创建一个属性,该属性用于执行系统环境变量下的JBOSS_HOME,
实际上是指向JBoss的安装路径 -->
<property name="jboss.home" value="${env.JBOSS_HOME}" />
<!-- 创建一个属性,该属性定位到JBoss安装目录下的server/default目录 -->
<property name="jboss.server.config" value="default" />
<!-- 创建一个属性,该属性是在工程的根目下的build文件夹,用于存放编译好的EJB应用 -->
<property name="build.dir" value="${basedir}\build" />
<!-- 将JBoss安装目录client目录下的所有jar文件引用到build文件夹中 -->
<path id="build.classpath">
<fileset dir="${jboss.home}\client">
<include name="*.jar" />
</fileset>
<pathelement location="${build.dir}" />
</path>
<!-- 功能:创建、删除build文件夹 -->
<target name="prepare">
<delete dir="${build.dir}" />
<mkdir dir="${build.dir}" />
</target>
<!-- 功能:编译EJB应用,该模块依赖于prepare模块 -->
<target name="compile" depends="prepare" description="编译">
<!-- 将EJB工程的src中的java类,编译到build文件夹中 -->
<javac srcdir="${src.dir}" destdir="${build.dir}">
<classpath refid="build.classpath" />
</javac>
</target>
<!-- 功能:打包EJB应用,该模块依赖于compile模块 -->
<target name="ejbjar" depends="compile" description="打包EJB应用">
<!-- 打包后的文件名称 -->
<jar jarfile="${basedir}\${ant.project.name}.jar">
<fileset dir="${build.dir}">
<include name="**/*.class" />
</fileset>
</jar>
</target>
<!-- 功能:发布EJB应用,该模块依赖于ejbjar,发布应用实际上就是拷贝文件到服务器 -->
<target name="deploy" depends="ejbjar" description="发布EJB应用">
<copy file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy" />
</target>
<!-- 功能:卸载EJB应用 -->
<target name="undeploy" description="卸载EJB应用">
<delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar" />
</target>
</project>
OrderTest.xml
package juit.test;
import org.junit.BeforeClass;
import org.junit.Test;
import cn.cmcc.ws.client.Order;
import cn.cmcc.ws.client.OrderService;
import cn.cmcc.ws.client.OrderServiceBean;
public class OrderTest {
private static OrderServiceBean serviceBean=new OrderServiceBean();
private static OrderService orderService;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
orderService=serviceBean.getOrderServicePort();
}
@Test
public void getOrder(){
Order order= orderService.getOrder("1");
System.out.println(order.getName());
}
@Test
public void getOrders(){
for(Order order:orderService.getOrders()){
System.out.println(order.getOrderId()+"\t"+order.getName());
}
}
@Test
public void getName(){
System.out.println(orderService.getName("zhangsan"));
}
}
build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="WebClient" default="wsclientgen" basedir=".">
<property name="src.dir" value="${basedir}/src" />
<path id="build.classpath" description="设置类路径">
<fileset dir="${basedir}/lib">
<include name="*.jar"/>
</fileset>
</path>
<target name="wsclientgen" description="生成webservice客户端辅助代码,执行后请刷新项目">
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport" classpathref="build.classpath"/>
<wsimport wsdl="http://127.0.0.1:8080/WebService/OrderServiceBean?wsdl"
sourcedestdir="${src.dir}" package="cn.cmcc.ws.client" keep="true"
verbose="true" destdir="${basedir}/bin"/>
</target>
</project>