ice world
There is nothing too difficult if you put your heart into it.
posts - 104, comments - 103, trackbacks - 0, articles - 0
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2012年7月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(8)
给我留言
查看公开留言
查看私人留言
随笔分类
ArcGIS(2)
CSS(4)
Database(14)
eclipse(10)
Hibernate(1)
Java(30)
Javascript(6)
Others(15)
Strut1(3)
Tomcat(7)
Weblogic(1)
Windows(13)
加解密(5)
随笔档案
2016年8月 (1)
2016年1月 (1)
2014年3月 (1)
2014年1月 (3)
2013年11月 (1)
2013年9月 (1)
2013年8月 (1)
2013年7月 (2)
2013年6月 (1)
2013年3月 (1)
2013年2月 (4)
2013年1月 (1)
2012年9月 (1)
2012年7月 (2)
2012年6月 (3)
2012年5月 (8)
2012年4月 (1)
2011年11月 (1)
2011年10月 (1)
2011年9月 (1)
2011年8月 (1)
2011年6月 (2)
2011年5月 (3)
2011年4月 (61)
2007年12月 (1)
搜索
最新评论
1. re: Failed to load JavaHL Library解决方法
啧啧,一语中的。
--Jerry Zhang
2. re: Error 1935的解决方法
我安装上面的方法成功了,各位同学们,千万别忘记修改注册表后重启电脑:)
--mentoruser
3. re: CXF+Spring+Tomcat简明示例
评论内容较长,点击标题查看
--无异
4. re: CXF+Spring+Tomcat简明示例
评论内容较长,点击标题查看
--chiangpan
5. re: Failed to load JavaHL Library解决方法[未登录]
顶顶顶
--小明
阅读排行榜
1. Failed to load JavaHL Library解决方法(78894)
2. CXF+Spring+Tomcat简明示例(51131)
3. java RSA加密解密(42667)
4. Java Tomcat SSL 服务端/客户端双向认证(一)(32884)
5. Java DES文件加密解密 javax.crypto.BadPaddingException: Given final block not properly padded(30878)
评论排行榜
1. CXF+Spring+Tomcat简明示例(27)
2. Java Tomcat SSL 服务端/客户端双向认证(一)(22)
3. Java数字证书对文件/加密/解密/签名/校验签名(8)
4. java RSA加密解密(7)
5. Failed to load JavaHL Library解决方法(6)
CXF+Spring+Tomcat简明示例
Posted on 2012-07-06 17:29
IceWee
阅读(51131)
评论(27)
编辑
收藏
所属分类:
Others
、
Tomcat
多系统(异构系统)进行交互时,一种良好的方式便是调用Web Service,本示例基于Apache组织的CXF,为了方便起见特将服务端和客户端写在同一个工程下,实际项目中是不可能的,但是客户端却依赖于服务端的Web Service接口,那么可以通过导出jar的方式。
环境:
MyEclipse10
JDK6
Tomcat7
CXF2.5
Spring3
示例项目结构图:
如上图所示,全部依赖的第三方库都在lib中,下面贴出全部代码。
IHelloService.java
package
bing.server;
import
javax.jws.WebService;
/** */
/**
* <p>
* WebService接口
* </p>
*
*
@author
IceWee
* @date 2012-7-6
*
@version
1.0
*/
@WebService
public
interface
IHelloService
{
public
String sayHello(String username);
}
HelloServiceImpl.java
package
bing.server;
import
javax.jws.WebService;
/** */
/**
* <p>
* WebService实现类
* </p>
*
*
@author
IceWee
* @date 2012-7-6
*
@version
1.0
*/
@WebService(endpointInterface
=
"
bing.server.IHelloService
"
, serviceName
=
"
HelloService
"
)
public
class
HelloServiceImpl
implements
IHelloService
{
@Override
public
String sayHello(String username)
{
return
"
hello,
"
+
username;
}
}
HelloServiceClient.java
package
bing.client;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
import
bing.server.IHelloService;
/** */
/**
* <p>
* WebService调用方-客户端
* </p>
*
*
@author
IceWee
* @date 2012-7-6
*
@version
1.0
*/
public
class
HelloServiceClient
{
public
static
void
main(String[] args)
{
ApplicationContext context
=
new
ClassPathXmlApplicationContext(
"
applicationContext-client.xml
"
);
IHelloService helloService
=
(IHelloService) context.getBean(
"
client
"
);
String response
=
helloService.sayHello(
"
Peter
"
);
System.out.println(response);
}
}
applicationContext-server.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<
beans
xmlns
="http://www.springframework.org/schema/beans"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws
="http://cxf.apache.org/jaxws"
xsi:schemaLocation
="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
>
<!--
***注意***
手动添加的内容:
xmlns:jaxws="http://cxf.apache.org/jaxws"
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
-->
<
import
resource
="classpath:META-INF/cxf/cxf.xml"
/>
<
import
resource
="classpath:META-INF/cxf/cxf-extension-soap.xml"
/>
<
import
resource
="classpath:META-INF/cxf/cxf-servlet.xml"
/>
<
jaxws:endpoint
id
="helloService"
implementor
="bing.server.HelloServiceImpl"
address
="/helloService"
/>
</
beans
>
applicationContext-client.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<
beans
xmlns
="http://www.springframework.org/schema/beans"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws
="http://cxf.apache.org/jaxws"
xsi:schemaLocation
="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
>
<!--
***注意***
手动添加的内容:
xmlns:jaxws="http://cxf.apache.org/jaxws"
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
-->
<
import
resource
="classpath:META-INF/cxf/cxf.xml"
/>
<
import
resource
="classpath:META-INF/cxf/cxf-extension-soap.xml"
/>
<
import
resource
="classpath:META-INF/cxf/cxf-servlet.xml"
/>
<
bean
id
="client"
class
="bing.server.IHelloService"
factory-bean
="clientFactory"
factory-method
="create"
/>
<
bean
id
="clientFactory"
class
="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"
>
<
property
name
="serviceClass"
value
="bing.server.IHelloService"
/>
<
property
name
="address"
value
="http://localhost:8080/CXFDemo/ws/helloService"
/>
</
bean
>
</
beans
>
web.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<
web-app
version
="3.0"
xmlns
="http://java.sun.com/xml/ns/javaee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
>
<
display-name
>
CXFDemo
</
display-name
>
<
context-param
>
<
param-name
>
contextConfigLocation
</
param-name
>
<
param-value
>
classpath:applicationContext-server.xml
</
param-value
>
</
context-param
>
<
listener
>
<
listener-class
>
org.springframework.web.context.ContextLoaderListener
</
listener-class
>
</
listener
>
<
servlet
>
<
servlet-name
>
CXFServlet
</
servlet-name
>
<
display-name
>
CXFServlet
</
display-name
>
<
servlet-class
>
org.apache.cxf.transport.servlet.CXFServlet
</
servlet-class
>
<
load-on-startup
>
1
</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>
CXFServlet
</
servlet-name
>
<
url-pattern
>
/ws/*
</
url-pattern
>
</
servlet-mapping
>
<
welcome-file-list
>
<
welcome-file
>
index.jsp
</
welcome-file
>
</
welcome-file-list
>
</
web-app
>
所有项目都已配置完成,可以发布到Tomcat了,在浏览器中输入:
http://localhost:8080/CXFDemo/ws
,返回如图:
从上图中可以看到我们对外发布的WebService接口,点击蓝色超链接,返回如图:
到此,证明我们的Web Service已经发布成功,可以进行调用测试了。运行HelloServiceClient,返回如图:
全文完!
Feedback
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2012-11-06 14:54 by
林祥
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
这些文件没有啊
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2012-11-27 13:09 by
狼湖
HelloServiceImpl 类的注解:
@WebService(endpointInterface = "bind.server.IHelloService", serviceName = "helloService")
注意:serviceName 是小写开头的helloService否则出错
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2012-11-27 13:10 by
狼湖
@林祥
那几个xml在cxf-xxx.jar包里面
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2012-11-28 11:07 by
qss
1、非常感谢楼主,我运行成功了。
2、我运行时报错误:
我看了原因是jar不全,我将apache-cxf-2.7.0解压后的lib中的jar包全部引入就好了。
3.再次感谢楼主!//:
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2012-11-28 11:24 by
IceWee
@qss
^_^
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2012-11-28 11:53 by
qss
1.IceWee,你好。
我想问一下,我返回的是对象时,对象有个属性error_message,部署tomcat时,报:类的两个属性具有相同名称 "error_message" ?
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2012-11-28 15:32 by
qss
IceWee,我已经解决了,^_^
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2013-01-16 10:25 by
Ameri
谢谢
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2013-03-09 15:44 by
asfas d
在网上找了两天 最后还是在你这里把问题解决了 能不能再写个传复杂数据的例子呀LZ
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2013-03-13 10:39 by
周炎婷
你好,我想问一下,如何运行客户端?
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2013-04-26 23:16 by
毕淑敏
好帖子,比网上n个cxf实例都强!
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2013-08-06 15:55 by
derekwu
少了 Woodstox这个包,否则报错java.lang.RuntimeException: Cannot create a secure XMLInputFactory
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2013-08-07 13:59 by
开发吧
博主能否提供源码啊?谢谢
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2013-11-25 11:31 by
3000
@derekwu
加了Woodstox之后,报找不到org/codehaus/stax2/XMLInputFactory2类,又加了stax2-api-3.1.1.jar 才好。
我用的apache-cxf-2.6.10
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2013-12-03 14:52 by
啊啊啊啊
啊啊啊啊啊啊啊啊
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2014-01-20 15:56 by
求知者 QQ 285678313
我的applicationContext-server.xml编译不过,“jaxws:endpoint ”那一行报错,错误信息是“Failed to read schema document ‘
http://cxf.apache.org/schemas/jaxws.xsd
’, because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
”
说找不到jaxws.xsd文件,我的网络良好,这个URL放在浏览器里可以访问到,求解,上面找不到你的联系方式,我的QQ 285678313
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2014-04-17 13:39 by
黑色柳丁
一模一样的配置,运行后提示:No ASM ClassWriterFound
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2014-04-17 13:39 by
黑色柳丁
然后引入asm的jar包就ok了。
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2014-09-24 11:22 by
555
555
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2014-09-25 14:55 by
邓丰坡
再次感谢,之前找了N多资料,也没有你的一个实例明了。
不过你的jar少说了
stax2-api-3.1.1.jar
woodstox-core-asl-4.2.0.jar
这个确实
#
re: CXF+Spring+Tomcat简明示例[未登录]
回复
更多评论
2014-10-10 11:08 by
william
非常感谢楼主的分享,实例太棒啦,我了两天,这是最棒的
#
re: CXF+Spring+Tomcat简明示例[未登录]
回复
更多评论
2014-11-10 13:30 by
ada
谢谢楼主,困扰我两天的问题终于解决了!
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2014-11-29 10:51 by
和
@求知者 QQ 285678313
我也遇到了同样的问题,请问怎么解决。谢谢
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2015-09-19 19:31 by
枯荷听雨
怎样调用那个接口,客户端如何访问呢?
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2015-12-17 14:20 by
匿名者
@林祥
在cxf.jar中
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2016-07-16 17:44 by
chiangpan
CXF版本不同,有些其实不需要<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />这些配置
#
re: CXF+Spring+Tomcat简明示例
回复
更多评论
2016-07-23 15:01 by
无异
请问有没有遇到这个问题的?
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'wbService': Invocation of init method failed; nested exception is java.lang.VerifyError: (class: com/wfy/service/jaxws_asm/Aaaa, method: setUserName signature: (Ljava/lang/String;)V) Illegal instruction found at offset 1
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1507)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:295)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:644)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:493)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4887)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1671)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
ORA-01438: value larger than specified precision allowed for this column & Could not synchronize database state with session
Debian 网络设置以及非法关机后无法联网 connect: network is unreachable
SVN(Subversion)自动同步备份配置
Debian Subversion(SVN)的安装
Linux VNC服务安装与配置
Linux 64bit下JBoss7安装手册
CXF+Spring+Tomcat简明示例
几款JQuery实现的右键菜单插件
C#操作word总结
Adobe Photoshop CS4打开图片错位,出现横竖的条纹、拉丝
Powered by:
BlogJava
Copyright © IceWee