微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

EJB3 无状态会话Bean 发布为WebService

首先把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>,把里面的?替换为我们想要输入的参数,单击@R_502_6367@的绿色的三角型图标,就可以发送一个请求,然后在右边就可以看到输出。 如果是想要调用save方法,同理,这回的参数变为<arg0><age>?</age><id>?</id><name>?</name></arg0>,我们只需要把?替换为我们的参数就可以了。 可以看出来,客户端发送的是符合soap格式的请求消息,而服务端返回的同样是符合soap格式的应答消息。 6.weservice客户端与服务器交互的时候,是通过SOAP消息来交互,而不是使用对象序列化技术。因此,我们的参数User并不需要实现Serializable接口,客户端把对象转化成一个XML文件,发送给服务器,服务器首先从XML文件还原出原来的对象,然后进行处理,然后把结果转化成XML发送回客户端。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐