最近项目需要上java web service的安全机制,并且要和.net wcf集成。这还真是一个让人觉得有挑战的事情。
搞了几天cxf的web service security后发现它有一个bug,不能同时传username token和进行证书加密。不爽。原因是只有一个userName可以设置。
记得当时很郁闷。而且还有一个让我不爽的事情。在公司轻松配出签名,username token,但是死活配不出sig+encryption。一会是jar包不对,我得下个jar包override jdk的jar包。一会是加密算法不支持。我又下policy jar和改配置,下第三方provider包去作为加密的实际执行。折腾了一天都没有搞定。最最郁闷的事情是回家一配,简直是一配就好。不用override jaxb包,不用改policy文件。而且我清楚的记得公司的jre是1.6和家里一样。
鉴于碰到的问题,又看了看其他的方案。Spring ws说是提倡wsdl first,我又不是集成遗留系统,所以不予采纳。axis说是一样用wss4j,我都怕了,也没有细看。
我想封装的东西还是不保险。不如直接看底层吧。于是看xwss和jax ws,wsit。xwss的文档明显看着比cxf好多了,handler的作用也是清清楚楚,不像cxf有些语义不清。最后的方案定下来是jax ws加xwss搞定。
做的过程真是可以用一句峰回路转来形容。碰到一个问题,解决一个,马上又是一个新问题。基本上都快崩溃了。我的想法是用standalone的code直接做安全。但是大多数的教程都是部署在server里的。而且基本没有什么好的文档讲怎么手工用code实现安全和一些内部机理。
比如说我现在还是不知道自定义的handler什么时候执行。这点就不如cxf了,至少cxf的phase清清楚楚的说明了handler的顺序。[这个最近有了新的认识,protocol handler and logic handler]
然后就是那个经典的mustunderstood=1的问题。搞了好久,还是不明白为什么。基本上网上的方案都试了。
最后灵光一现,决定jar要尽可能从同一个产品中引用。于是下了一个jwsdp,然后所有的包都是引用里面的。不过有一个例外。还用了一个sun jdk的jar包。最后的最后,终于通了。
这次实践的总结:
1 一定要在对所有流行的解决方案有个熟悉的时候,在深入看一两个。
2 不在迷信open source的易用性。封装未必会简化开发。
3 java世界里jar还是比较乱的。尽可能用同一个product的lib下的jar包。这个太变态了,经常一个名字有n多重名实现。不知道大家平时开发时怎么解决这个问题。
4 不论用不用底层的技术,还是应该先看看底层的技术,因为上层的封装都是依赖于底层的,而且很多思想也是来源于底层。
分享到:
- 2008-11-27 23:31
- 浏览 1851
- 评论(4)
- 论坛回复 / 浏览 (2 / 4130)
- 查看更多
相关推荐
Java Web Service 学习例子,里面有大量用来开发web services的Java程序示例,非常值得学习。 使用到的技术及工具如下: Apache: www.apache.org and xml.apache.org -- Ant 1.4.1 -- SOAP 2.2 -- Tomcat 3.2...
java web service 教程java web service 教程java web service 教程java web service 教程java web service 教程java web service 教程java web service 教程java web service 教程java web service 教程java web ...
Java Web Service 总结 Java Web Service 是一种基于 XML 的分布式系统架构,它使得不同的系统和应用程序可以通过标准的协议和数据格式进行通信和交互。下面是 Java Web Service 的总结,涵盖了 Web Service 的原理...
此外,Web Service 还可以使用其他技术来提供附加功能,如安全性、事务处理等。 Web Service 的互操作性是其主要优点之一。互操作性使得不同系统、平台、应用程序和编程语言之间可以无缝集成。然而,互操作性并不是...
### Java Web Service 教程详解 #### 一、引言 在现代软件开发领域中,Web服务技术扮演着至关重要的角色。它不仅为不同应用程序之间的交互提供了标准的方式,还极大地促进了分布式系统的构建和发展。本教程旨在...
Java调用Java Web Service是Java开发中的一个常见任务,它涉及到Web服务的消费与交互,主要基于SOAP(Simple Object Access Protocol)协议。本篇将详细阐述这个过程,并结合标签“源码”和“工具”,探讨如何通过源...
Java Web Service性能监视是针对基于Java的Web服务应用程序的性能监控过程,主要目的是确保系统高效稳定运行,并在问题出现时能够快速定位和解决。在大型企业如电信或移动级别公司的运营中,数据库管理员(DBA)的...
《XFire Java Web Service 客户端详解》 在当今的软件开发中,Web服务已经成为分布式系统间交互的重要手段。XFire,作为一个历史悠久的Java Web Service框架,为开发者提供了便捷的方式来创建、部署和消费Web服务。...
Java Web Service教程是针对使用Java技术构建网络服务的详尽指南。Web服务是一种通过互联网交换数据的方式,允许不同系统之间进行通信。Java Web Service利用开放标准如SOAP(Simple Object Access Protocol)和WSDL...
【Java Web Service客户端实现详解】 Java Web Service是一种基于标准的、平台无关的、用于构建分布式应用程序的技术,它允许服务提供者和服务消费者通过网络进行通信。客户端实现Java Web Service主要包括三种方式...
在Java中,现代的Web Service实现已经转向了Apache CXF、JAX-WS(Java API for XML Web Services)和Spring-WS等框架,它们提供了更强大的功能和更好的性能。然而,XFire作为早期的框架,对于理解Web Service的基本...
JAVA Web service 开发实例
个人收藏经典及大量的java Web Service 实例项目,基本上都可以正常运行,适合正在学习Web Service技术的你 大量的java Web Service 实例项目,基本上都可以正常运行,适合正在学习Web Service技术的你,里面有10几...
对于安全性需求,Java支持WS-Security标准,可以实现身份验证、加密、签名等功能,确保Web Service通信的安全。 7. **RESTful Web Services** 除了传统的SOAP风格Web Service,Java也可以实现RESTful风格的服务,...
总的来说,"Java+Web Service教程"将引导你走过从基础理论到实战技能的全过程,使你能够熟练地利用Java技术构建和维护高效、安全的Web Service。通过学习和实践,你将成为一名能够解决跨平台通信问题的专家,为企业...
本篇我们将深入探讨如何在Java中调用Web Service,主要涵盖以下几个核心知识点: 1. **SOAP与WSDL**: Web Service通常基于SOAP(Simple Object Access Protocol)协议进行通信,这是一种XML格式的消息交换协议。...
本示例探讨的主题是“Java调用.NET Web Service”,这涉及到不同技术栈之间的互操作性,主要利用了Java的SOAP(Simple Object Access Protocol)客户端库来与.NET的Web服务进行通信。下面我们将详细解析这一过程。 ...
Java Restful Web 源代码Java Restful Web 源代码Java Restful Web 源代码Java Restful Web 源代码Java Restful Web 源代码Java Restful Web 源代码Java Restful Web 源代码Java Restful Web 源代码Java Restful Web...
《Java RESTful Web Service实战》PDF版本下载