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>
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |