.net调用java webservice基于JBOSS服务器 学习笔记(一)

1、遇到数组类型或List等复杂数据类型是,需要对其进行包装,就是将复杂数据类型放到一个类里面:

public class VOCargoJTWS {
    /** JT列表  */
    private List<TBLCargoJT> cargoJTs;    
    /** 分页数据信息*/
    private PageInfo pageInfo;
    
    
    public VOCargoJTWS() {
        super();
    }

    @SuppressWarnings("unchecked")
    public VOCargoJTWS(PageInfo pageInfo) {
        super();
        this.cargoJTs = (List<TBLCargoJT>) pageInfo.getList();
        this.pageInfo = pageInfo;
        pageInfo.setList(null);
    }}

 2.基于JBOSS服务器发布webservice:

  在浏览器可以看到发布信息,访问地址http://lenovo-pc/EvisaWS/CargoJTService?wsdl 。

@Stateless
@WebService
@WebContext(contextRoot = "/EvisaWS", urlPattern = "/CargoJTService")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class CargoJTWSBean implements CargoJTWS {

    private static final Logger logger = Logger.getLogger(CargoJTWSBean.class);
    @EJB
    private CargoJTServiceLocal cargoJTServiceLocal;


    @WebMethod
    @WebResult(partName = "return")
    public VOCargoJTWS findPageInfo(Integer currentPage, Integer pageCount)  {
        try {
            PageInfo pageInfo = cargoJTServiceLocal.findPageInfo1(currentPage, pageCount);            
            VOCargoJTWS cargoJTWS = new VOCargoJTWS(pageInfo);
            return cargoJTWS;
        } catch (Exception e) {
            logger.error(e);
        }
        return null;
    }
}

 3、处理关联关系:

  如果类与类直接存在关联关系,不需要查询出子表信息时,可以直接将其设置为null。如果需要,那么可通过集合的size方法加载,子类的关联关系和父类关联关系的处理方式一样。

  如果出现循环调用,Parent--->Child--->Parent,可以在get属性上加 @XmlTransient 注释。

@Stateless
@Local(CargoJTServiceLocal.class)
@LocalBinding(jndiBinding = "CargoJTServiceBean/local")
@Remote(CargoJTServiceRemote.class)
@RemoteBinding(jndiBinding = "CargoJTServiceBean/remote")
public class CargoJTServiceBean implements CargoJTServiceLocal, CargoJTServiceRemote {

    private static final Logger logger = Logger.getLogger(CargoJTServiceBean.class);
    @EJB
    private CargoJTDaoLocal cargoJTDao;


    @SuppressWarnings("unchecked")
    public PageInfo findPageInfo1(Integer currentPage, Integer pageCount ) throws ServiceException {
        try {
            PageInfo piInfo = cargoJTDao.findPageInfo(currentPage, pageCount);
            List<TBLCargoJT> list = (List<TBLCargoJT>) piInfo.getList();
            for(TBLCargoJT cargoJT : list){
                cargoJT.getAssessType().getCode();
                cargoJT.setGoods(null);
            } 
            return piInfo;
        } catch (DAOException e) {
            logger.error(e);
            throw new ServiceException("", e);
        }
    }
}

 4、这是.net根据wsdl生成的类列表:

  要生成   voCargoJTWS   这个对象也就是在c#中可以看到,那么这个对象里面必须有两个以上的属性,否则这个对象不会生成。

posted @ 2013-07-17 16:19  若 ♂ 只如初见  阅读(404)  评论(0编辑  收藏  举报