EJB3.0容器模型的WEB服务-WebService
使用JBoss、EJB3.0、开发WebService和客户端:
1、 首先我们先建立Webservice:
第一步:首先建立一个普通的Java项目并且导入G:\javaEEServers\jboss-4.2.3.GA-jdk6\jboss-4.2.3.GA\client下的所有*.jar文件
第二步:建立EJB Bean接口如下:
public interface OrderService {
public String getUserName(String name);
public Order getOrder(String orderid);
public List<Order> getOrders();
}
第三步:建立实现这个EJB Bean接口实现类
@Stateless //这里指定Bean的会话状态
@Remote(OrderService.class)//远程接口
//修改WebService中的一些属性方法如下
@WebService(targetNamespace="htttp://www.liyong.com"//名字空间
,name="OrderService"//portType 的name
,serviceName="OrderServiceBean")//修改服务的名称
public class OrderServiceBean implements OrderService {
//需要把某个方法发布为Webservice在其前面加上@WebMethod其他没有加的默认不发布问Webservice方法
@Override
public Order getOrder(String orderid) {
//这里只是模拟数据,可从数据库中得到数据
Order order=new Order();
order.setOrderid(orderid);
order.setName("小李");
return order;
}
@Override
public List<Order> getOrders() {
List<Order> orders=new ArrayList<Order>();
Order order1=new Order();
order1.setOrderid("111");
order1.setName("小张");
Order order2=new Order();
order2.setOrderid("222");
order2.setName("小王");
orders.add(order1);
orders.add(order2);
return orders;
}
@Override
public String getUserName(String name) {
return name;
}
}
第四步:使用ANT来编译、发布我们的EJB Bean build.xml
<?xml version="1.0"?>
<!-- ======================================================================= -->
<!-- EJB3 HelloWorld build file -->
<!-- ======================================================================= -->
<project name="WebService" default="ejbjar" basedir=".">
<property environment="env" />
<property name="app.dir" value="${basedir}" />
<property name="src.dir" value="${app.dir}" />
<property name="jboss.home" value="${env.JBOSS_HOME}" />
<property name="jboss.server.config" value="default" />
<property name="build.dir" value="${app.dir}\build" />
<property name="build.classes.dir" value="${build.dir}\classes" />
<!-- Build classpath -->
<path id="build.classpath">
<fileset dir="${jboss.home}\client">
<include name="*.jar" />
</fileset>
<pathelement location="${build.classes.dir}" />
</path>
<!-- =================================================================== -->
<!-- Prepares the build directory -->
<!-- =================================================================== -->
<target name="prepare" depends="clean">
<mkdir dir="${build.dir}" />
<mkdir dir="${build.classes.dir}" />
</target>
<!-- =================================================================== -->
<!-- Compiles the source code -->
<!-- =================================================================== -->
<target name="compile" depends="prepare" description="编绎">
<javac srcdir="${src.dir}" destdir="${build.classes.dir}" debug="on" deprecation="on" optimize="off" includes="com/**">
<classpath refid="build.classpath" />
</javac>
</target>
<target name="ejbjar" depends="compile" description="创建EJB发布包">
<jar jarfile="${app.dir}\HelloWorld.jar">
<fileset dir="${build.classes.dir}">
<include name="com/**/*.class" />
</fileset>
</jar>
</target>
<target name="deploy" depends="ejbjar">
<copy file="${app.dir}\HelloWorld.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy" />
</target>
<!-- =================================================================== -->
<!-- Cleans up generated stuff -->
<!-- =================================================================== -->
<target name="clean">
<delete dir="${build.dir}" />
<delete file="${jboss.home}\server\${jboss.server.config}\deploy\HelloWorld.jar" />
</target>
</project>
第五步:发布我们的EJB Bean --->之前开启JBoss服务
第六步:编写我们的WebServiceClient
我们使用wsimport工具的Ant任务类生成辅助类 build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="WebServiceClient" 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
//这里的"http://...."可以再JBoss客户端得到
//http://localhost:8080/jbossws/services
wsdl="http://127.0.0.1:8080/HelloWorld/OrderServiceBean?wsdl"
sourcedestdir="${src.dir}" package="com.foshanshop.ws.client" keep="true"
verbose="true" destdir="${basedir}/bin"/>
</target>
</project>
第七步:编译生成辅助类 这是可以看到我们的Src目录中生成了许多文件
第八步:
我们编写单元测试来调用Webservice的代码
public class Test {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@org.junit.Test
public void getOrder()
{
OrderServiceBean orderServiceBean =new OrderServiceBean();
OrderService order=orderServiceBean.getOrderServicePort();
Order order2=order.getOrder("333");
System.out.println(order2.getOrderid()+order2.getName());
}
}