加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

CXF webservice

发布时间:2020-12-17 00:59:05 所属栏目:安全 来源:网络整理
导读:说实话,一切知识只要你细心,都能在官网找到,但有些朋友浪费很长时间,就是搞不懂。戒骄戒躁,静下心来。 最近有个同事,凡事都和犟嘴,我躲都躲不了,言必称百度,网易,facebook,google,多小的问题都能上升到哥德巴赫猜想的理论高度,而实际上工作效率
说实话,一切知识只要你细心,都能在官网找到,但有些朋友浪费很长时间,就是搞不懂。戒骄戒躁,静下心来。
最近有个同事,凡事都和犟嘴,我躲都躲不了,言必称百度,网易,facebook,google,多小的问题都能上升到哥德巴赫猜想的理论高度,而实际上工作效率极其低下。
我这里想说的是, 少些理论多些实际,你看的见的理论都是从你看不见的地方总结出来的。一步一个脚印吧。

cxf简单不能在简单的webservice发布,难点只有一个,那就是与jdk6冲突问题。网上许多解决方案,但是忽略了一个,jar包版本问题。

${JAVA_HOME}jdk6jrelibendorsed

在次检查CXF中的jar包,是否是2.2.1.1以上版本,若不然还是报错。删除其他的jax-api 开头的jar必须删除要不还是冲突。


2:服务端代码

package?com.cxf.service.server;


import ?java.util.List;

import ?javax.jws.WebParam;
import ?javax.jws.WebService;


/**
? ?* ? This ? class ? was ? generated ? by ? Apache ? CXF ? 2.3.3
? ?* ? 2012 -? 05 -? 18T15:26:41.003+08:00
? ?* ? Generated ? source ? version: ? 2.3.3
? ?*
? ?*/
?
@WebService ?( name =? "orderService"? )
public ? interface? OrderService {

?????String sayHi( ?@WebParam (name= ?"text" )String text);
??? String sayHiToUser(User user);
??? String[] SayHiToUserList(List<User> userList);
}



实现类:

package ?com.cxf.service.server;

import ?java.util.LinkedHashMap;
import ?java.util.List;
import ?java.util.Map;

import ?javax.jws.WebService;

@WebService ?(endpointInterface =? "com.cxf.service.server.OrderService"? ,serviceName =? "orderService" ?)
public ? class? OrderProcessImpl? implements ?OrderService {

?????Map<Integer,User>? users ?=? new ?LinkedHashMap<Integer,User>();

????? ?public ?String sayHi(String text) {
??????????? return ? "Hello " ?+ text;
?????}

????? ?public ?String sayHiToUser(User user) {
??????????? users .put(? users .size() + 1,user);
??????????? return ? "Hello " ?+ user.getName();
?????}

????? ?public ?String[] SayHiToUserList(List<User> userList) {
??????????String[] result =? new ?String[userList.size()];
??????????? int ?i = 0;
??????????? for ?(User u : userList) {
??????????????result[i] =? "Hello " ?+ u.getName();
??????????????i++;
??????????}
??????????? return ?result;
?????}
}
2:web.xml
<??xml?version?="1.0"?encoding=?"UTF-8"??>
<! ?DOCTYPE? web-app
???? PUBLIC? "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN"
???? "http://java.sun.com/dtd/web-app_2_3.dtd" ?>
< ?web-app >
????? ?< context-param? >
??????????? < param-name? > contextConfigLocation? </ ?param-name >
??????????? < param-value? > WEB-INF/beans.xml? </ ?param-value >
????? ?</ context-param? >


????? ?< listener? >
??????????? < listener-class? >
???????????????org.springframework.web.context.ContextLoaderListener
??????????? </ ?listener-class >
????? ?</ listener? >
????? ?< servlet? >
??????????? < servlet-name? > CXFServlet? </ ?servlet-name >
??????????? < display-name? > CXF Servlet? </ ?display-name >
??????????? < servlet-class? >
??????????????org.apache.cxf.transport.servlet.CXFServlet
??????????? </ ?servlet-class >
??????????? < init-param? >
??????????????? < param-name? > config-location? </ ?param-name >
???????????????? < param-value? > /WEB-INF/beans.xml? </ ?param-value >
??????????? </ ?init-param >
??????????? < load-on-startup? > 1? </ ?load-on-startup >
????? ?</ servlet? >

????? ?< servlet-mapping? >
??????????? < servlet-name? > CXFServlet? </ ?servlet-name >
??????????? < url-pattern? > /services/*? </ ?url-pattern >
????? ?</ servlet-mapping? >

</ ?web-app >
源码就不上传了,太简单了。
3:客户端代码,为了避免兼容性,也是本人太懒我采用的是自动代码生成。请看ant文件内容:

<?xml version="1.0"?>
<project?name=?"cxf wsdl2java"?basedir=?"."?default=?"cxfWSDLToJava">???
??? <property ? name= "cxf.home"? location? = ?"${basedir}/WebRoot/WEB-INF/" />


??? <path ? id= "cxf.classpath"? >
?????? <fileset ? dir= "${cxf.home}/lib"? >
????????? <include ? name= ?"**/*.jar" />
?????? </fileset>
??? </path> ?????
??? <target ? name= "cxfWSDLToJava"? >
?????? <java ? classname= ?"org.apache.cxf.tools.wsdlto.WSDLToJava" ? fork= ?"true" >
????????? <arg ? value= ?"-client" />
????????? <arg ? value= ?"-d" />
????????? <arg ? value= ?"client" />
????????? <arg ? value= ?"http://localhost:8080/webserviceCXF/services/OrderService?wsdl" ?/>
????????? <classpath>
???????????? <path ? refid= ?"cxf.classpath" />
????????? </classpath>
?????? </java>
??? </target>
</project>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读