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 方式)
配置文件
该方法就像发布 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
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8485249/viewspace-429937/ ,如需转载,请注明出处,否则将追究法律责任。