加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

EJB3 无状态会话Bean 发布为WebService

发布时间:2020-12-17 01:04:52 所属栏目:安全 来源:网络整理
导读:首先把EJB发布为Webservice,然后用soapUI工具作为Webservice的客户端来调用我们的Webservice. 每一个Webservice在服务端都有一个WSDL(Web?Service?Description?Language)文件与之对应,这个WSDL文件就定义了服务的接口、访问地址、返回类型等,客户端通过这

首先把EJB发布为Webservice,然后用soapUI工具作为Webservice的客户端来调用我们的Webservice.
每一个Webservice在服务端都有一个WSDL(Web?Service?Description?Language)文件与之对应,这个WSDL文件就定义了服务的接口、访问地址、返回类型等,客户端通过这个WSDL文件就可以来访问Webservice。
如果把一个EJB发布为Webservice,必须要符合一定的前提条件,
(1)EB必须是无状态的EJB
(2)@WebService
(3)@WebMethod
在EJB3.0里面,发布Webservice非常简单,下面我们就来看一个例子。
1.新建一个普通的java项目ejb06
2.新建这么几个类
(1)User.java
//这是一个普通的JavaBean。
package?edu.sdust.xjs;
public?class?User?{
????private?int?id;
????private?int?age;
????private?String?name;
????setter();
????getter();
}
(2)UserManager.java
//这是EJB的远程接口
package?edu.sdust.xjs;
public?interface?UserManager?{
????public?String?sayHello(String?name);
????public?User?save(User?user);
}
(3)UserManagerService.java
//这是实现类,也就是我们的Webservive
package?edu.sdust.xjs;
import?javax.ejb.Stateless;
import?javax.jws.WebMethod;
import?javax.jws.WebService;
@Stateless
@WebService
public?class?UserManagerService?implements?UserManager?{
?@Override
?@WebMethod
?public?String?sayHello(String?name)?{
??return?name+"?said?:?hello!";
?}
?@Override
?@WebMethod
?public?User?save(User?user)?{
??String?name?=?user.getName();
??user.setId(1);
??System.out.println("user?"+name+"?is?saved!?id?is?:"+user.getId());
??return?user;
?}
}
【注意】
(1)必须是Stateless。
(2)不是@Remote客户端,也不是@Local客户端,而是@WebService客户端。
(3)在想要暴漏为Webservice客户端访问的方法上加上@WebMethod
可以看出来,非常的简单。
3.启动jboss,把ejb06导出到deploy目录下,观察控制台的输出。
4.打开浏览器,输入:
http://localhost:8080/jbossws,进入jboss的Webserveice管理控制界面。然后点击“view?a?list?of?deployed?services”这个超级链接,就可以看到我们发布的所有的Webservice。

找到我们刚才的Webservice,点击进去,就可以看到我们刚才的Webservice的WSDL文件。 5.打开soapUI(可以从sourceforge.net上下载)。 file->new?soapUI?project->拷贝WSDL的网址,到initial?WSDL/WADL后面的输入框里面,给它取个名字->ok. 现在就看到了一个叫做UserManagerServiceBinding的绑定,它下面有save和sayHello两个方法。 我们如果想要调用sayHello方法,双击sayHello下面的request,然后在右边就会弹出一个请求窗口,找到<arg0>?</arg0>,把里面的?替换为我们想要输入的参数,单击左上角的绿色的三角型图标,就可以发送一个请求,然后在右边就可以看到输出。 如果是想要调用save方法,同理,这回的参数变为<arg0><age>?</age><id>?</id><name>?</name></arg0>,我们只需要把?替换为我们的参数就可以了。 可以看出来,客户端发送的是符合soap格式的请求消息,而服务端返回的同样是符合soap格式的应答消息。 6.weservice客户端与服务器交互的时候,是通过SOAP消息来交互,而不是使用对象序列化技术。因此,我们的参数User并不需要实现Serializable接口,客户端把对象转化成一个XML文件,发送给服务器,服务器首先从XML文件还原出原来的对象,然后进行处理,然后把结果转化成XML发送回客户端。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读