xfire+spring(ssh) 实现wsdl 的公网访问
来源:互联网 发布:易语言制作聊天软件 编辑:程序博客网 时间:2024/05/24 01:45
最近做了个webservice 接口,供接收方调用,我用的是xfire 1.26 和spring 1.2(因为用2.0有包冲突,没找到解决办法,而spring1.2又不影响代码开发),基本的我就不说了,说下可能会出问题的两个地方:
1. .aegis.xml 配置问题
1) 首先在接口类同目录下,创建一个前缀同名的xml, 例如接口类名是 Isshsservice.java,则同目录下创建一个Isshsservice.aegis.xml , 截取部份代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<mapping>
<method name="getList">
<return-type componentType="com.ssh.entity.Ceshi" />
</method>
</mapping>
</mappings>
先看我下面的讲解:(我只说我项目中遇到的几种情况)
2) 关于配置问题
Aegis Binding 对 int , String ,boolean, date 类型的返回和参数无需配置; 例如,当返回的类型是这其中的一种或者无返回类型,而参数也是基本类型,自定义类型(一个bean-- Users )或者无参数,都不需要配置。
当接口方法返回是 List ,其他参数先不管,首先就要想到配置以下代码:
在 <mapping> </mapping> 中添加:
<method name="返回list类型的方法名,比如说 getallUsers">
<return-type componentType="com.ssh.entity.Users" /> //// ==>List 包含的是 users, 指明其路径
</method>
然后请你在javabean Users 中去看,是不是有相互关联的多对1,一对多。 看我的users (同类的省略):
private Integer usersId;
private HisPackage hisPackage;
private Doctor doctor;
private String productsNumber;
private String usersPrivatePhone;
private Double usersTotal;
private Integer usersScore;
private Integer usersState;
private Integer usersCurrentState;
private Set changePackages = new HashSet(0);
private Set paymentRecords = new HashSet(0);
private Set checkResults = new HashSet(0);
private Set consumeRecords = new HashSet(0);
private Set relationShips = new HashSet(0);
private Set overages = new HashSet(0);
private Set privateStandards = new HashSet(0);
因为有关联的对象 和 set ,所以需要在 再建立一个 users.aegis.xml ,和users 同目录:
<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns:my="http://my.ssh"> ---------------- “”中的路径是:http://my. 实体包entity的上一级包名,我也迷糊了
<mapping name="my:Users"> ---------------- Users 就是那个javabean 的名字
<property name="hisPackage" ignore="true" /> ---------- name=“”中的名字和上面的bena 中的一样
<property name="doctor" ignore="true" />
<property name="changePackages" ignore="true" />
<property name="paymentRecords" ignore="true" />
<property name="checkResults" ignore="true" />
<property name="consumeRecords" ignore="true" /> --------name=“”中的名字和 set 后面的名字一样
<property name="relationShips" ignore="true" />
<property name="overages" ignore="true" />
<property name="privateStandards" ignore="true" /> -------- ignore =" true " 的原因较多,不说了,就这样用
</mapping>
</mappings>
而当返回类型是 自定义对象的时候,也大同小异 例如返回类型是 Doctor , 而doctor 中不全是基本数据类型,则也需要配置
doctor.aegis.xml , 跟 list 是一样的。
上面提到的都是与返回类型有关的配置,下面看看参数的配置问题,
当参数是基本数据类型,不需要对参数进行配置;当参数是list 类型,分两种情况,如果返回类型是上面两种,则需要对参数List 配置下,那么需要在<method></method>之间再加入以下代码
<parameter index="0" componentType="java.lang.String"/>
index="0"代表方法的参数的序号,0即第一个参数。
如果返回类型是基本类型,不需要配置(没遇到过,有待测试)
另外说下我的另一个经验,就是接口写好然后实现到配置,最好是一个个来,不然到最后报错,因为关联多了,不好找错误地方。
2. 控制台调用接口测试
在java 类里面(控制台)用到 hibernate DAO 的时候,需要三个地方的配置,
例如在 sshsserviceImpl.java 中,调用了 对 users 的 某个操作,
则 1.
private UsersDAO user_dao = null; 然后 get/set 得到
public UsersDAO getUser_dao() {
return user_dao;
}
public void setUser_dao(UsersDAO user_dao) {
this.user_dao = user_dao;
}
这样就不会在下面文件中 报 找不到 users 的错误了
2. 在配置DAO 的文件
<bean id="UsersDAO" class="com.ssh.dao.UsersDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
后面添加 接口实现类 的申明:
<bean id="allimpl" class="com.ssh.impl.All_impls">
--------------------allimpl 自定义, 后面3 中会用到,class 是路径
<property name="user_dao" ref="UsersDAO"></property>
-----------user_dao 是上面 1 中申明的, ref 是 2 中 bean id---------
3. 控制台 测试 或者 线程启动时候调用方法
ApplicationContext ctx = new FileSystemXmlApplicationContext(
"src/applicationContext.xml");
All_impls dao = (All_impls) ctx.getBean("allimpl");--------------- allimpl即2中的
今天写这个,我已经离开webservice 开发半个月了,写的是自己曾经恼火的地方,其他疑问请百度。
- xfire+spring(ssh) 实现wsdl 的公网访问
- ssh+lcx实现Metasploit测试机没有公网IP时候的公网端口映射
- xfire的Client的WSDL调用
- xfire 修改wsdl的参数名称
- 公网(Internet)访问局域网内部主机的实现方法
- 利用ssh反向代理从公网访问局域网内的树莓派
- nat123端口映射: 外网通过ssh访问内网非公网ip的服务器
- nat123端口映射: 外网通过ssh访问内网非公网ip的服务器
- 访问wsdl的接口
- 自己搭建的ssh xfire
- Spring下搭建以Xfire实现的Webservice平台
- Xfire在Spring下实现安全的WebService详述---配置
- 利用nat123实现公网访问内网
- spring+xfire暴露和访问WebService
- 华为云服务器无法ssh连接&&可以公网ip访问
- 公网下远程树莓派Raspberry Pi的SSH/WOL/监控/桌面的实现
- XFire客户端的实现
- 一个根据wsdl生成xfire stub的应用问题
- JS取参数值【转】
- Sql Server锁表
- TCP/IP 基本概念
- C# 中的委托
- 光照
- xfire+spring(ssh) 实现wsdl 的公网访问
- 隐藏主窗口的方法
- 大量AUTO-INC LOCK 导致的DeadLOCK
- 数据结构考试大纲
- DataGridView 控件中的列类型
- 程序员发展之路
- WinCE上BINFS实现详解
- 亲爱的假期
- oracle 空字符串 null 和各种判断当前字段是否为空