1. 基于 JWS 的 Web Services 的发布 (直接利用 axis 包里面的 webapp)
a. 写一个 Java 文件(Hello.java),含有需要暴露为 WS 的方法,改名为 .jws (Hello.jws)
b. 把该文件放到发布目录 webapps/axis
c. WSDL http://localhost:8080/axis/Hello.jws?wsdl
d. 使用 WSDL2Java 把 WSDL 对应的 WS 转换成直接可用的 Java 文件
2. 定制发布(Service 方式)
配置文件 <webapp>/WEB-INF/server-config.wsdd, 将所需要暴露的 WS 方法写在里面。
该方法就像发布 Servlet,JWS 就像发布 JSP
JWS 方法使我们必须将已有类的源代码发布出来,并且会将里面所有的 public 方法暴露出来
3. 处理复杂类型参数和返回值
Axis 要求复杂类型的对象编写必须符合 JavaBean 的规范。
使用 JWS 处理复杂类型和过去没有区别,系统会自动完成。
使用 Service 方式需要添加类型的映射配置 (typeMapping)
WSDL2Java生成的文件多了 getTypeDesc, getSerializer, getDeserializer 等
4. MessageContext
通过 Message Context 可以获取 AxisEngine 实例的引用(getAxisEngine()),请求和回应的消息(getRequestMessage(), getResponseMessage()),验证信息,以及 Servlet 规范中的实例引用等(我们可以获取类 HTTPConstants 中所有以 MC_ 开头的常量对应的信息,用 getProperty())
5. Web 服务会话管理
在 Web 服务中我们可以借助 HTTP 以及 HTTPCookie 来处理会话信息。
对于服务端来说,只需要通过 MessageContext 实例获取 Session 对象即可进行会话级的数据保存或者读取。
在代码中需要设定 setMaintainSession(true)
6. 保护 Web 服务
a. 使用HTTPS传输方式 该方式需要在Web服务器上进行配置同时需要客户端的支持。该措施有效的防止数据在网络传输过程中被窥视。
b. 重命名Axis已有的一些名字,例如AdminService、AxisServlet,删除Axis目录下一些无用的程序,例如happyaxis.jsp以及一些无用的jar包等。
c. 通过设置axis.enableListQuery的值为false来停止AxisServlet列出所有服务的功能。
d. 禁止自动生成WSDL的功能
e. 使用过滤器来增加一些验证功能,例如客户端的地址等。
参考:
http://www-128.ibm.com/developerworks/cn/webservices/ws-deepaxis/
http://www-128.ibm.com/developerworks/cn/webservices/ws-startaxis/index.html
posted on 2006-10-26 14:01
steady 阅读(2042)
评论(0) 编辑 收藏 所属分类:
技术随笔