posts - 66,  comments - 11,  trackbacks - 0
EJB2.1和web服务
1、下载安装服务器后,需要设置环境变量。
Set J2EE_HOME=J2EE安装目录
Set CLASSPATH 
=%CLASSPATH%;%J2EE_HOME%\\lib\\j2ee.jar;.
Set Path =%Path%;%J2EE_HOME%\\bin;.

2、创建初始目录
+HelloBeanService
    +META-INF(application.xml;sun-j2ee-ri.xml )
    +ejb
       +META-INF(ejb-jar.xml; webservices.xml;mapping.xml)
       -*.java文件(EJB相关的类)
       -config.xml
3、定义web服务接口
package com.testproject.ejb.web;

/*
 * Hello服务Endpoint接口
 * 需要注意的是,这里使用的是EJB2.1无状态会话Bean,它作为WEB服务端点时可以不提供Home接口和Remote
 * Locale接口,它提供的是web服务端点接口,这个接口扩展了Remote接口。
 
*/

public interface HelloInterface extends java.rmi.Remote {
    
public String hello()throws java.rmi.RemoteException;
}


4、实现服务端点接口
package com.testproject.ejb.web;

import java.rmi.RemoteException;

import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

/*
 * 定义了服务端点接口,接下来的任务就是开发无状态会话Bean。无状态会话Bean同样需要实现SessionBean接口,
 * 服务端点接口定义的方法在会话Bean中实现。
 
*/

public class HelloBean implements SessionBean {
    
    
public void ejbCreate(){
        
/*
         * 这里不能接收任何参数
         
*/

    }


    
public void ejbActivate() throws EJBException, RemoteException {
    }


    
public void ejbPassivate() throws EJBException, RemoteException {
    }


    
public void ejbRemove() throws EJBException, RemoteException {
    }


    
public void setSessionContext(SessionContext arg0) throws EJBException,
            RemoteException 
{
    }

    
/*
     * 业务方法:输出hello
     
*/

    
public String hello(){
        
return "Hello wyq";
    }


}


5、创建EJB描述
用于部署成Web服务的无状态会话Bean的描述符和普通的无状态会话Bean不同ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar version="2.1"
xmlns
="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
    
<display-name>HelloBean</display-name>
    
<enterprise-beans>
        
<session>
            
<display-name>HelloBean</display-name>
            
<ejb-name>HelloBean</ejb-name>
            
<service-endpoint>com.testproject.ejb.web.HelloInterface</service-endpoint>
            
<ejb-class>com.testproject.ejb.web.HelloBean</ejb-class>
            
<session-type>Stateless</session-type>
            
<transaction-type>Container</transaction-type>
        
</session>
    
</enterprise-beans>
</ejb-jar>

在这个新的部署描述符中,使用<service-endpoint>指定了服务端点,同时,必须指定EJB为无状态会话Bean
6、生成WEB服务描述

下面的任务就是生成一个Web服务描述,我们通常使用工具来生成这个描述符。在这里使用J2EE提供的wscompile工具来生成。在使用wscompile工具生成web服务描述前,首先手工编写一个简单的XML描述config.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
    
<service 
        
name="MyHelloBeanService" 
        targetNamespace
="urn:HelloBean" 
        typeNamespace
="urn:HelloBean"
        packageName
="helloBeanService">
        
<interface name="com.testproject.ejb.web.HelloInterface"/>
    
</service>
</configuration>

在这个描述中,指定了目标的名称空间、包的名字和Web服务端点接口:HelloInterface。如下命令就可以生成一个web服务描述

c:\\ HelloBeanService\\ejb \\>wscompile -define -d . -nd . -classpath . config.xml
自动生成MyHelloBeanService.wsdl文件。
7、编写一个web服务映射文件:
在ejb\\META-INF目录下新建一个mapping.xml文件,然后编辑这个描述符
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE java-wsdl-mapping PUBLIC
    "-//IBM Corporation,Inc.//DTD J2EE JAX-RPC mapping 1.0//EN"
    "http://www.ibm.com/standards/xml/webservices/j2ee/j2ee_jaxrpc_mapping_1_0.dtd"
>
<java-wsdl-mapping>
    
<package-mapping>
        
<package-type>HelloBeanService</package-type>
        
<namespaceURI>urn:HelloBean</namespaceURI>
    
</package-mapping>
</java-wsdl-mapping>
8、编写webservices.xml文件
另外,还需要提供webservices.xml文件,并存放到Ejb-jar存档的META-INF目录中。各个J2EE产品可能提供相应的部署工具来创建这个文件。
9、EJB打包
另外,web服务部署描述符在EJB-JAR文件中的位置是META-INF/webservices.xml.把生成的HelloBeanService.wsdl拷贝到ejb\\META-INF目录下
c:\\HelloBeanService\\ejb\\jar cvf ejb.jar com META-INF
10、Application打包
HelloBeanService\\MEAT-INF目录下创建2个文件:application.xml和sun-j2ee-ri.xml
application.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC '-//Sun Microsystems,
    Inc.//DTD J2EE Application 1.3//EN'
    'http://java.sun.com/dtd/application_1_3.dtd'
>
<application>
    
<description>Application description</description>
    
<display-name>HelloBeanServiceApp</display-name>
    
<module>
        
<ejb>ejb.jar</ejb>
    
</module>
</application>

最后归档
c:\\ HelloBeanService\\ejb\\>copy ejb.jar ../
c:\\ HelloBeanService\\ejb\\>cd..
c:\\ HelloBeanService\\\\>jar cvf encryptservice.ear ejb.jar META-INF

 


 

posted on 2009-11-13 16:13 王永庆 阅读(144) 评论(0)  编辑  收藏 所属分类: EJB学习笔记

只有注册用户登录后才能发表评论。


网站导航:
 
<2009年11月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用链接

留言簿(1)

随笔分类

随笔档案

关注blogs

搜索

  •  

最新评论

阅读排行榜

评论排行榜