`
leon.s.kennedy
  • 浏览: 107014 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

开发EJB容器模型的WEB服务

    博客分类:
  • ejb3
 
阅读更多

 

Web服务也是一种分布式技术,它与EJB最大的不同是,Web服务属于行业规范,可以跨平台及语言。

而EJB属于java平台规范,尽管理论上可以跨平台,但实现起来比较复杂,所以其应用范围局限在了

java平台。

看上去两者好像是互相竞争的关系,其实不是。他们两者的偏重点不一样,Web服务偏重

的是这个系统对外提供什么功能,而EJB偏重的是如何使用一个个组件组装这些功能。
就好比一个硬盘,他对外提供的是存储服务,这时Web服务的关注点,对于怎样组装这个硬盘,怎样

构造这些小零件,web服务并不关心,但这些却是EJB所关心的。

 

JavaEE为web service提供了两种不同的编程模型:EJB容器模型及Web容器模型
下面以JAX-WS2.x规范(Java API for XML-based Web Service)介绍 webservice开发

 

新建一个java Project项目,取名为WebService 将jboss\client下所有jar包引入
这里使用EJB容器模型,所以建立一个无状态会话bean,将这个无状态会话bean发布为webservice
首先定义接口OrderService (com.jboss.service包)

 

接口中:第一个方法,获得用户名称 public String getUserName(String name);
第二个方法取得Order:public Order getOrder(String orderid);
Order是一个javaBean(实体bean)
第三个方法获取全部Order:public List<Order> getOrders();

开发EJB容器模型的WEB服务

 

新建Order javaBean(com.jboss.bean包),实现序列化接口
private String orderid;
private String name;

开发EJB容器模型的WEB服务

 

编写接口实现类OrderServiceBean (com.jboss.service.impl包)
指定无状态bean和远程接口
编写方法业务代码

通常Order是实体bean,从查询数据库获取信息,此处只是模拟

开发EJB容器模型的WEB服务

把这里的所有方法暴露为WebService方法:在类前添加@WebService注解
如果指向暴露其中某个方法,而不是全暴露
则在该方法前,加上@WebMethod注解标注要暴露的方法

 

如果这里标志了一个@WebMethod,下面两个方法将不暴露
下面不标注@WebMethod是不会暴露的

开发EJB容器模型的WEB服务

 

从HelloWorld项目中拷贝ANT,修改项目名后,发布到jboss中
观察控制台输出,看到WebService已成功发布
进入jboss管理后台查看:http://localhost:8080/jbossws
点击View a list of deployed services 查看发布服务的列表
就会看到刚才所发布的服务,可以通过点击这个服务,查看该描述语言
<definitions targetNamespace>进入后会看到默认的命名空间为:包名
<portType>端点接口名称采用了 接口名+Bean
<service name>服务名称采用实现类简单类名+Service

 

可以通过@WebService注解的属性进行修改
targetNamespace 命名空间
name属性设置端点接口名称
serviceName 服务名
将命名空间改为http://ws.jboss.com
端点接口名称改为 接口名称
服务名称改为 实现类名称
修改后,重新发布,再观察是否修改掉

 开发EJB容器模型的WEB服务

当Web服务开发完,开发Web服务的客户端

开发步骤如下:
1.在应用的类路径下放入JAX-WS的jar文件(下载路径:https://jax-ws.dev.java.net)。
如果用的是JDK6,这一步可以省略,因为JDK6已经绑定了JAX-WS。目前JDK6绑定的JAX-WS版本是2.0
当某些应用使用的JAX-WS版本高于2.0时,就有可能发生版本问题,此时需要升级JDK6中的JAX-WS版本
下载最高版本的JAX-WS,在产品额度lib目录中找到jaxws-api.jar和jaxb-api.jar,把这两个文件

copy到JDK6_HOME/jre/lib/endorsed目录下
通常endorsed目录是不存在的,需要手动创建
如果用的开发工具是MyEclipse,这时应该把MyEclipse所使用的jdk更改为系统安装的jdk

2.利用WebService客户端生成工具来生成辅助类
3.借助辅助类使用webService

---------------------------------------------------------------

这里使用wsimport工具的Ant任务类生成辅助类

新建build.xml,把下面代码粘贴进

--------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!-- 缺省任务,执行wsclientgen -->
<project name="WSClient" default="wsclientgen" basedir=".">
   <property name="src.dir" value="${basedir}/src" />
   <path id="build.classpath" description="设置类路径">
    <!-- 把项目下lib中的jar都设置到类路径下-->
        <fileset dir="${basedir}/lib">
            <include name="*.jar"/>
        </fileset>
    </path>
    <target name="wsclientgen" description="生成webservice客户端辅助代码,执行后请刷新项目">
     <!-- 为com.sun.tools.ws.ant.WsImport类,定义使用标签 -->
     <taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport" classpathref="build.classpath"/>
     
     <!--wsdl指向web服务描述语言所在的位置-->
     <!--sourcedestdir生成的源文件所存放在的目录-->
     <!--package生成的java源文件所用到的java包-->
     <!--keep是否替换旧文件-->
     <!--verbose是否显示执行细节-->
     <!--destdir源文件编译后存放在的目录-->
     <wsimport wsdl="http://127.0.0.1:8080/WebService/OrderServiceBean?wsdl"
      sourcedestdir="${src.dir}" package="com.jboss.ws.client" keep="true"
      verbose="true" destdir="${basedir}/bin"/>
    </target>
</project>

-----------------------------------------------------------------

运行ANT生成客户端调用辅助代码

开发EJB容器模型的WEB服务
之后刷新WSClient项目(客户端),在src下看到生成的java文件
新建单元测试,调用这些web服务

如何调用web服务?

http://localhost:8080/jbossws/
首先找到服务名称<service name="..."> 找到与其对应的javaBean(生成的)
1.生成对象
2.获取端点名称
3.通过端点名称,调用webservice方法

开发EJB容器模型的WEB服务

在进行WebService开发时,如果是返回List的对象,尽量用泛型,EJB容器会解析对象并把它翻译成

对应的XML类型 

分享到:
评论

相关推荐

    ejb3 第12讲 --开发EJB容器模型的WEB服务

    NULL 博文链接:https://8366.iteye.com/blog/440338

    EJB3.0容器模型的WEB服务-WebService

    NULL 博文链接:https://1028826685.iteye.com/blog/1503446

    EJB3.0学习总结(二)--EJB3.0容器模型的WEB服务

    NULL 博文链接:https://lc2586.iteye.com/blog/720918

    传智播客 EJB3.0PPT 完整版 黎明活

    本资源为PPT,配套视频为: 01_下载安装与运行jboss ... 12_开发EJB容器模型的WEB服务 附录01_EJB3基本概念及发展前景 附录02_EJB3.0推荐教程 附录03_EJB3的运行环境 如果需要配套视频,请给本人私信。

    ejb3.0培训教程与源码(绝对精品)

    2, EJB容器可以为我们提供中间件服务; 3, EJB客户端:(常见的) 1) 独立的java程序 2)web程序 3)其他的EJB, 4)其他通过Web Service 调用的客户端; 4, EJB容器可以为我们提供的服务: 1) 事务:够用 2)安全:不够...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    中文名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 原名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 作者: 李刚 资源格式: PDF 版本: 第一版 出版社: 电子...

    EJB3.0实录教程+配套源码

    2, EJB容器可以为我们提供中间件服务; 3, EJB客户端:(常见的) 1) 独立的java程序 2)web程序 3)其他的EJB, 4)其他通过Web Service 调用的客户端; 4, EJB容器可以为我们提供的服务: 1) 事务:够用 2)安全:不够...

    JSF1.2+EJB3.0实现的一个项目实例

    &lt;br&gt; 1)本项目开发环境 操作系统: Windows xp sp2 JDK环境: JDK1.6.0 IDE工具: MyEclipse6.0GA 数据库: Mysql 5.0.41 字符集设置:utf-8 EJB容器: JBoss4.2.1GA Web容器:...

    SpringBoot 全家桶 - 本项目对目前Web开发中常用的各个技术,通过和SpringBoot的集成.zip

    比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架...

    J2EE应用开发详解

    第1章 Java Web应用开发简介 1 1.1 Java EE应用概述 1 1.2 Java EE概念 1 1.2.1 Java EE多层模型 1 1.2.2 Java EE体系结构 2 1.3 Java EE的核心API与组件 4 1.4 Web服务器和应用服务器 13 1.5 小结 16 第2章 建立...

    【SpringBootWeb】-SpringBootWeb框架详解

    尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...

    Java开发热门项目

    这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。【SpringIDE:Eclipse平台下一个辅助开发插件】.

    Spring Framework 开发参考手册

    使用TransactionProxyFactoryBeans, Web应用是完全事务性的,就像使用EJB提供的那种 容器管理的事务一样. 所有的你的自定义业务逻辑可以通过简单的POJO来实现,并通过Spring的Dependency Injection容器进行管理...

    健身房管理信息系统设计.doc

    组件在分布式服务器的组件容器中运行,如Servl et组件在Servlet容器上运行,EJB组件在EJB容器上运行,容器间通过相关的协议进行通讯 ,实现组件的相互调用。遵从这个规范的开发者将得到行业的广泛支持,使企业级应用的 ...

    SpringBoot集成常用开发中间件.zip

    比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架...

    Springboot、SpringCloud开发脚手架,集合各种常用框架使用案例.zip

    比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架...

Global site tag (gtag.js) - Google Analytics