单点登陆、webservice(cxf,axis)
?以前不知道何为单点登陆,原来其定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 为了保持数据的一致性且减小工作量,我们决定在A系统调用B系统中的方法,此时就需要首先从A系统单点登陆到B系统中才能调用。 最近我在两个系统之间写了个接口,虽然两个系统都用JAVA编写,但所用的JDK,Tomcat的版本不同,A系统用的是JDK1.6,B系统用的是JDK1.4。最开始在A系统用CXF写好服务端,在B系统也用CXF写好客户端,测试通过了。后来才知道B系统用的是JDK1.4,但CXF貌似不支持JDK1.4,在网上查说axis1.0支持JDK1.4,最后客户端改成axis1.0。 由于之前CXF,AXIS都未用过,没少折腾。 ? ?CXF构建webservice程序的大致流程如下: 首先下载cxf包,目前最新的版本是apache-cxf-2.1.,下栽地址http://cxf.apache.org/download.html。 参考JAR包 commons-logging-1.1.jar geronimo-activation_1.1_spec-1.0-M1.jar (or Sun's Activation jar) geronimo-annotation_1.0_spec-1.1.jar (JSR 250) geronimo-javamail_1.4_spec-1.0-M1.jar (or Sun's JavaMail jar) geronimo-servlet_2.5_spec-1.1-M1.jar (or Sun's Servlet jar) geronimo-ws-metadata_2.0_spec-1.1.1.jar (JSR 181) jaxb-api-2.1.jar jaxb-impl-2.1.6.jar jaxws-api-2.1.jar jetty-6.1.5.jar jetty-util-6.1.5.jar neethi-2.0.jar saaj-api-1.3.jar saaj-impl-1.3.jar stax-api-1.0.1.jar wsdl4j-1.6.1.jar wstx-asl-3.2.1.jar XmlSchema-1.2.jar xml-resolver-1.2.jar The Spring jars (optional - for XML Configuration support): aopalliance-1.0.jar spring-core-2.0.4.jar spring-beans-2.0.4.jar spring-context-2.0.4.jar spring-web-2.0.4.jar And the CXF jar: cxf-2.1.jar ? 1.在web.xml加载CXF <servlet-name>CXFServlet</servlet-name> <servlet-mapping> ? 2.编写java接口,和接口的实现 import java.text.ParseException; import javax.jws.WebParam; import com.thunisoft.fy.gxpt.server.webservice.bean.FyqqRespInfo; @WebService(name="IFyqqRespService") ?public String getRespXML(@WebParam(name="cbr")String cbr) throws ParseException; } 实现省略。。。。 ? 3.创建beans.xml文件【当然需要在web.xml文件中加载此文件】,里面配置接口的实现类 <beans xmlns="http://www.springframework.org/schema/beans" ?【CXF配置文件有上面两种配置方式,一个同事在采用第一种配置方式时在同一工程中调用时没有问题,但在不同工程调用时webservice的服务端反射的DAO一直是null,不知什么原因?有知道的可以指点下。因此最好采用下面的配置方式】 这三个步骤完成了,就可以通过http://localhost:8080/Project/services/messageServiceWS?wsdl可以访问wsdl文档 ? CXF开发webservice客户端【jar包可以参照服务端】: JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); String str = service.getRespXML(cbr); ? Axis1开发webservice客户端: ? Service service = new Service(); call.setOperationName(method);// WSDL里面描述的操作名称 ?call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); ? 我只把返回String 的弄成功了,返回类型为List的有待研究 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |