• EJB3 学习笔记八


    开发ejb模型的web服务

    Web属于行业规范,服务可以跨平台和语言

    Ejb属于java平台规范

    Javaee为web service 提供了两种不同编程模型:

    Ejb容器模型

    Web容器模型

    示例代码如下:

    /**

     * Copyright (C) 2016

     *

     * FileName:OrderServiceBean.java

     *

     * Author:<ahref="mailto:zhenhuayue@sina.com">Retacn</a>

     *

     * CreateTime: 2016-7-24

     */

    // Package Information

    package cn.yue.ejb.wsservice.impl;

    import java.util.ArrayList;

    import java.util.List;

    import javax.ejb.Remote;

    import javax.ejb.Stateless;

    import javax.jws.WebService;

    import cn.yue.ejb.entity.Order;

    importcn.yue.ejb.wsservice.OrderService;

    /**

     * 订单的业务操作

     *

     * @version

     * @Description:

     * @author <ahref="mailto:zhenhuayue@sina.com">Retacn</a>

     * @since 2016-7-24

     */

    // 指定所有方法

    @WebService(

    // 命名空间

            targetNamespace = "http://ws.retacn.cn",

    // 端口类型

            name = "OrderService",

    // 服务名称

            serviceName = "OrderServiceBean")

    @Stateless

    @Remote(OrderService.class)

    public class OrderServiceBeanimplements OrderService {

       // 可以使用 @WebMethod来单独指定方法

       // @WebMethod

       @Override

       public String getUserName(String name) {

           return "retacn";

       }

       @Override

       public Order getOrder(String orderId) {

           return new Order(orderId, "测试订单");

       }

       @Override

       public List<Order> getOrders() {

           List<Order> orders = new ArrayList<Order>();

           orders.add(new Order("001", "测试订单一"));

           orders.add(new Order("002", "测试订单二"));

           return orders;

       }

    }

    可以通过以下地址查看wadl

    http://localhost:9990/console/App.html#webservice-runtime

    Web服务的客户端

    导入

    利用webservice客户端生成工具生成辅助类

    Cmd

    Cd e:/insallPackage/javaweb/webService/apache-cxf-3.1.1/bin

    wsdl2java -d 生成文件目录

    http://localhost:8080/HelloWorldEJB/OrderServiceBean/OrderService?wsdl

    使用辅肋类调用webservice,示例代码如下:

    /**

     * Copyright (C) 2016

     *

     * FileName:WsClient.java

     *

     * Author:<a href="mailto:zhenhuayue@sina.com">Retacn</a>

     *

     * CreateTime: 2016-7-24

     */

    // Package Information

    package cn.retacn.ws.test;

    import java.util.List;

    import cn.retacn.ws.Order;

    import cn.retacn.ws.OrderService;

    import cn.retacn.ws.OrderServiceBean;

    public class WsClient {

       /**

        * @param args

        */

       public static void main(String[] args) {

           OrderServiceBean orderServiceBean = new OrderServiceBean();

           OrderService orderService = orderServiceBean.getOrderServicePort();

           Order order = orderService.getOrder("123");

           System.out.println("order: " + order.getOrderId() +"---" + order.getOrderName());

           String userName = orderService.getUserName("123");

           System.out.println("用户名为:" + userName);

           List<Order> orders =orderService.getOrders();

           for (Order order2 : orders) {

                System.out.println("---"+ order2.getOrderId() + ":" + order2.getOrderName());

           }

       }

    }

    Ejb实现拦截器的功能

    1 导入jboss-interceptors-api_1.1_spec-1.0.0.Final.jar

    2 编写自定义拦截器

    3 在bean中添加@Interceptors(***.class)

  • 相关阅读:
    Protobuf
    CPU profiling
    转 Unicode 和 UTF-8 的区别
    Redis数据结构底层知识总结
    MySQL 加锁处理分析 ---非常牛逼
    MySQL Gap Lock问题
    利用Linux文件系统内存cache来提高性能
    Xcode7安装CocoaPods
    字符串排列组合算法
    iOS项目开发实战——学会使用TableView列表控件(四)plist读取与Section显示
  • 原文地址:https://www.cnblogs.com/retacn-yue/p/6194210.html
Copyright © 2020-2023  润新知