在Jboss环境下Web Service调用EJB(三)

日期: 2007-12-05 作者:谈祥庆 来源:TechTarget中国

  完成之后,就完成了EJB部分的打包设置。

  接下来是Web Service的打包设置,Web Service很简单,只要将web-service.xml配置文件打包成wsr文件就可以了,点击add按钮,输入打包名称,选择输出目录,点击确定,如下图

  在PersonManagerService.wsr选项上点击右键,在出现的右键菜单上选择Add File选项出现如下窗口

  在File输入框中选择web-service.xml配置文件的路径,在Prefix输入框中输入META-INF,表示配置文件将被打包到META-INF目录中。点击确定完成。

  到此所有的打包配置工作全部完成。完成之后会在项目的根目录下产生一个packaging-build.xml文件,其实它是一个ant的build文件,有兴趣的可以打开看看。可以学到不少东西。

  接下去是运行ant,进行打包,在项目名称上点击右键,在出现的右键菜单上点击Run Packing选项,如下图

  如果运行成功,则会去build目录下产生2个文件,PersonManager.jar和PersonManagerService.wsr文件,前一个是EJB打包文件,第2个是Web Service打包文件。如下图所示

  3.EJB和Web Service的部署与发布

  在PersonManager.jar文件上点击右键,在出现的右键菜单上选择Deployment->Deploy to选项,将EJB发布到jboss服务器中,如下如所示

  用同样的方法部署发布PersonManagerService.wsr文件,完成EJB和Web Service的发布部署。需要注意的是,通过上面的方法发布应用程序,需要在Eclipse中设置Jboss服务器的安装路径,相关设置请查阅Jboss-IDE的使用说明。另外的一个发布方法,是利用Jboss的热部署特性,直接将PersonManager.jar和PersonManagerService.wsr这2个文件直接复制到${JBOSS_HOME} serveralldeploy目录下即可。由于Jboss3.2只有在all模式下才包含Web Service的支持,所以一定要复制到all目录中的deploy目录下。至此所有的开发部署已经完成!

  六.测试Jboss的服务是否已经成功发布

  要测试服务已经成功启动,请使用以下方法

  1.启动jboss服务器,注意启动服务器需要带all参数,如下如所示

  启动成功之后的画面如下

  在红色线框中我们已经可以看到EJB(PersonManager.jar)已经部署成功了。

  2.检查Web Service是否已经启动。打开浏览器,输入http://localhost:8080/jboss-net/servlet/AxisServlet,出现如下的页面:

  从中我们发现PersonManagerService这个服务已经启动了。包含getPersonByName,getPersonList,storePerson和deletePerson方法,注:其中getPersonList方法应该是没有的,因为在该篇文章中我们并没有在会话bean的实现类中实现这个方法,也没有在远程接口中定义这个方法。

  到此我们已经测试完成了,并证明EJB和Web Service都已经成功的发布或启动了。

  七.编写客户端进行测试

  我们使用application的方式编写一个客户端程序对刚才发布的EJB和Web Service进行测试。代码如下:

package com.webservice.client;

import java.net.*;
import javax.xml.namespace.*;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.*;
import org.apache.axis.encoding.*;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import com.pojo.*;

public class PersonManagerClinet
{
    public static void main( String args[] ) throws Exception
    {
        String endpoint = “http://localhost:8080/jboss-net/services/PersonManagerService”;
        Service service = new Service();
        Call call = (Call) service.createCall();
        call.setTargetEndpointAddress(new URL(endpoint));
        QName qn = new QName(“http://localhost:8080/pojo/person”, “Person”);
        call.registerTypeMapping(Person.class, qn, new BeanSerializerFactory(
                Person.class, qn),
                                 new BeanDeserializerFactory(Person.class, qn));
        Person person = null;
       
        call.setOperationName(“storePerson”);
        call.addParameter(“person”, XMLType.XSD_ENTITY, ParameterMode.IN);
        person = new Person(“java”);
        call.invoke(new Object[] {person});
        System.out.println(“OK!”);

        call.setOperationName(“getPersonByName”);
        call.addParameter(“name”, XMLType.XSD_STRING, ParameterMode.IN);
        call.setReturnType(qn);
        person = (Person) call.invoke(new Object[] {“java”});
        System.out.println(person);
    }
}

  运行结果如下:

  可以看到服务已经运行了,并返回了正确的结果。到此我们已经完成了在Jboss环境下Web Service调用EJB的开发,另外jboss自从4.0开始升级了其Web Service模块,由原来的jboss-net升级到了ws4ee,而且部署和发布也发生很大的变化,可以说,在3.2下的调试成功的Web Service在4.0上是无法运行的,目前在jboss的官方网站上有一篇关于在jboss4.0上配置web service的文章。有兴趣的人可以去查阅一下。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 为什么开源企业的开源大旗正在褪色

    最近这几年,开源一直是人们比较关注的话题,不过现在也该到冷静下来进行思考的时候了,真正的开源公司已经利用开源赚得盆满钵盈。

  • 何时是创建门户应用最佳时机

    在创建出新企业门户应用,链接到现有系统之前,你可能需要检查一下这些系统,确保这些系统本身不需要重造。这样你可能就会重新考虑是否要创建新企业门户应用了。

  • 优化Jboss EAP平台的12项最佳实践

    在过去几年里,NBC环球电影公司的Web架构团队牺牲了可观的时间和资源去改善其高度分布的企业架构。Richir Choudhry、Alpesh Vaghela……

  • 开源PaaS技术手册

    开源业界向来不太平,关于诸多技术的开源未来足以让很多粉丝兴奋躁动起来。商业软件开始揉进开源技术,开源技术也成为IT大佬们得基础架构,这一种趋势蔓延的缓慢有有力。在广告漫天飞得云计算中,开源的分量有多重?是否走向云端就意味着走向开源?开源的PaaS如何选择?如何为开源项目选择PaaS厂商?哪些服务平台值得我们关注,下面我们一一来揭晓。