`
zaife
  • 浏览: 40399 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

cxf+spring+struts2的helloWorld

    博客分类:
  • cxf
阅读更多

参照Cxf官方的例子,用Cxf+spring+struts2写了一个helloWorld的例子

首先安装cxf的eclipse插件,文档参考:incubator.apache.org/cxf/setting-up-eclipse.html

Service代码:

HelloWorld
  1. package com.zaife.cxfspring;   
  2.   
  3.   
  4. import javax.jws.WebService;   
  5.   
  6. @WebService  
  7. public interface HelloWorld {   
  8.     String sayHi(String text);   
  9. }  
HelloWorldImpl
  1. package com.zaife.cxfspring;   
  2.   
  3. import javax.jws.WebService;   
  4.   
  5. @WebService(endpointInterface = "com.zaife.cxfspring.HelloWorld")   
  6. public class HelloWorldImpl implements HelloWorld {   
  7.   
  8.     public String sayHi(String text) {   
  9.         return "Hello " + text;   
  10.     }   
  11. }  

 

java 代码
  1. package com.zaife.struts2;   
  2.   
  3. import com.opensymphony.xwork2.Action;   
  4. import com.opensymphony.xwork2.ActionSupport;   
  5. import com.zaife.cxfspring.HelloWorld;   
  6.   
  7. public class CallCxfService extends ActionSupport {   
  8.        
  9.     private HelloWorld client;   
  10.        
  11.     private String message;   
  12.   
  13.     public void setClient(HelloWorld client) {   
  14.         this.client = client;   
  15.     }   
  16.        
  17.     public String execute() {   
  18.         this.message = this.client.sayHi("dd");   
  19.         return Action.SUCCESS;   
  20.     }   
  21.   
  22.     public String getMessage() {   
  23.         return message;   
  24.     }   
  25.   
  26.     public void setMessage(String message) {   
  27.         this.message = message;   
  28.     }      
  29. }  

Spring配置文件

  1. <beans xmlns="http://www.springframework.org/schema/beans"  
  2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns:jaxws="http://cxf.apache.org/jaxws"  
  4.     xsi:schemaLocation="   
  5. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd   
  6. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">  
  7.   
  8.     <import resource="classpath:META-INF/cxf/cxf.xml" />  
  9.     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  
  10.     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
  11.   
  12.     <jaxws:endpoint    
  13.       id="helloWorld"    
  14.       implementor="com.zaife.cxfspring.HelloWorldImpl"    
  15.       address="/HelloWorld" />  
  16.          
  17.          
  18.   
  19.     <bean id="client" class="com.zaife.cxfspring.HelloWorld"    
  20.       factory-bean="clientFactory" factory-method="create"/>  
  21.        
  22.     <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">  
  23.       <property name="serviceClass" value="com.zaife.cxfspring.HelloWorld"/>  
  24.       <property name="address" value="http://localhost:8080/cxf-spring/test/HelloWorld"/>  
  25.     bean>  
  26.        
  27.     <bean id="callCxfService" class="com.zaife.struts2.CallCxfService">  
  28.         <property name="client" ref="client" />  
  29.     bean>  
  30.          
  31. beans>  

Struts配置文件

  1. <!---->xml version="1.0" encoding="UTF-8" ?>  
  2. <!---->
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5. <struts>  
  6.     <constant name="struts.objectFactory" value="spring" />  
  7.     <constant name="struts.devMode" value="true" />  
  8.   
  9.     <package name="cxf-spring" extends="struts-default">  
  10.   
  11.         <action name="hello" method="execute" class="callCxfService">  
  12.             <result>/index.jspresult>  
  13.                
  14.         action>                
  15.     package>  
  16.   
  17. struts>  

web.xml配置

xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.4"    
  3.     xmlns="http://java.sun.com/xml/ns/j2ee"    
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee    
  6.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  7.                      <!---->  
  8.     <servlet>  
  9.         <display-name>CXF Servletdisplay-name>  
  10.         <servlet-name>CXFServletservlet-name>  
  11.         <servlet-class>  
  12.             org.apache.cxf.transport.servlet.CXFServlet   
  13.         servlet-class>  
  14.         <load-on-startup>1load-on-startup>  
  15.     servlet>  
  16.   
  17.     <servlet-mapping>  
  18.         <servlet-name>CXFServletservlet-name>  
  19.         <url-pattern>/test/*url-pattern>  
  20.     servlet-mapping>     
  21.     <!---->     
  22.     <filter>  
  23.         <filter-name>struts2filter-name>  
  24.         <filter-class>  
  25.             org.apache.struts2.dispatcher.FilterDispatcher   
  26.         filter-class>  
  27.     filter>  
  28.   
  29.     <filter-mapping>  
  30.         <filter-name>struts2filter-name>  
  31.         <url-pattern>/*url-pattern>  
  32.     filter-mapping>      
  33.     <context-param>  
  34.         <param-name>contextConfigLocationparam-name>  
  35.         <param-value>WEB-INF/hello.xmlparam-value>  
  36.     context-param>  
  37.   
  38.     <listener>  
  39.         <listener-class>  
  40.             org.springframework.web.context.ContextLoaderListener   
  41.         listener-class>  
  42.     listener>  
  43.   
  44.   
  45.   <welcome-file-list>  
  46.     <welcome-file>index.jspwelcome-file>  
  47.   welcome-file-list>  
  48. web-app>  

Jsp页面

  1. <%@ page language="java"  pageEncoding="ISO-8859-1"%>  
  2. <%@ taglib prefix="s" uri="/struts-tags" %>  
  3. <!---->>  
  4. <html>  
  5.   <head>       
  6.     <title>My JSP 'index.jsp' starting pagetitle>  
  7.     <!---->  
  8.   head>  
  9.      
  10.   <body>  
  11.     <s:property value="message" /><br>  
  12.   body>  
  13. html>  
分享到:
评论
7 楼 lycmlove 2008-09-22  
Cxf2.08+spring2+struts2下可以跑通。
6 楼 samwalt 2008-07-30  
最后在浏览器里运行:http://localhost:8080/HelloWorld/hello.action
出现下面的错误:
description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Could not send Message.
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)


root cause

javax.xml.ws.soap.SOAPFaultException: Could not send Message.
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:199)
$Proxy33.sayHi(Unknown Source)
com.zaife.struts2.CallCxfService.execute(CallCxfService.java:13)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)

......
这个
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419

碰到好几次了,一直都没有解决,是什么问题啊?
5 楼 samwalt 2008-07-30  
hanqiaorui 写道
qianlei007 写道
    <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" />  


这几个文件,那里去找??

这3个文件在cxf-2.1.1.jar里面。你可以找找看。


还需要cxf的哪些jar包放在WEB-INF/lib路径下?
4 楼 hanqiaorui 2008-07-28  
qianlei007 写道
    <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" />  


这几个文件,那里去找??

这3个文件在cxf-2.1.1.jar里面。你可以找找看。
3 楼 qianlei007 2008-06-26  
    <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" />  


这几个文件,那里去找??
2 楼 zzuizui 2008-04-08  
好文章,把CXF应用Struts2+Spring框架的快速上手文档!Eclipse3.3下可以跑通。
1 楼 allenBen 2007-12-20  
你就不能发完全了啊  学Apache全部发些半吊子例子 靠
com.zaife.struts2.CallCxfService呢?

相关推荐

Global site tag (gtag.js) - Google Analytics