J2EE web service开发(五)把ejb发布为web服务

把 ejb 作为 web 服务发布比 JSE 端点要复杂些 . 并且只有无状态会话 Bean 才能发布成 Web 服务 . 利用 ejb 的一大好处就是容器管理的事务 . 但是 spring 同样能做到这个 , 这一点不再具有很大的吸引力了 . 那么剩下的好处估计就只有用在必须用 ejb 的情况下又同时需要 web 服务这种情况了 . EJB 端点跟 JSE 端点跟一个不同点在于 : 不需要在 web.xml 文件中配置 servlet 映射 , 但是需要在 ejb-jar.xml 文件中配置 web 服务端点接口 . 另一个不同之处就是不需要一个实现 web 服务接口的具体类 . Jboss 4.04 版本下具体实现 .

建立一个无状态会话 bean

package ejb;   


 



import javax.ejb.SessionBean;   




import javax.ejb.SessionContext;   




import javax.ejb.CreateException;   




public class WebServiceBean implements SessionBean {   



    SessionContext sessionContext;   



    public void ejbCreate() throws CreateException {   



    }   



    public void ejbRemove() {   



    }   



    public void ejbActivate() {   



    }   



    public void ejbPassivate() {   



    }   


 



    public void setSessionContext(SessionContext sessionContext) {   




        this.sessionContext = sessionContext;   



    }   


 



    public void hello() {   




        System.out.println("hello");   



    }   


}   


 


 



package ejb;   



 



import javax.ejb.EJBObject;   




import java.rmi.RemoteException;   



 



public interface WebService extends EJBObject {   




    public void hello() throws RemoteException;   



}   


 



package ejb;   



 



import javax.ejb.EJBHome;   




import javax.ejb.CreateException;   




import java.rmi.RemoteException;   



 



public interface WebServiceBeanHome extends EJBHome {   




  public WebService create() throws CreateException, RemoteException;   



}   

没有什么好多说的 .

定义一个 Web 服务接口

package ejb;   


 



import java.rmi.*;   




public interface WebServiceTest extends Remote {   




    public void hello() throws RemoteException;   



}   

生成 Web 服务所需的配置文件 :

< configuration xmlns="http://www.jboss.org/jbossws-tools"   



   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   




   xsi:schemaLocation="http://www.jboss.org/jbossws-tools http://www.jboss.org/jbossws-tools/schema/jbossws-tool_1_0.xsd">   




  < java-wsdl>   




    < service name="WebServiceTest" style="rpc" endpoint="ejb.WebServiceTest"/>   




    < namespaces target-namespace="http://ejb" type-namespace="http://ejb"/>   




    < mapping file="jaxrpc-mapping.xml"/>   




    < webservices ejb-link="WebServiceBean"/>   




  < /java-wsdl>   




< /configuration>   

利用 Jboss 自带的工具生成 Web 服务所需要的布署文件 . wstools -cp  classes -config wstools-config.xml

把生成的布署文件放到 META-INF 文件夹而不是 JSE 端点的 web-INF 文件夹下 .

修改 ejb-jar.xml 文件加上 ejb.WebServiceTest 元素 , 注意顺序 .OK 打包发布 .

客户端调用程序

相关推荐