`
xbcoil
  • 浏览: 125839 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

WebService CXF+struts+spring 示例

阅读更多

 

最近学校WebService的CXF..做了一个示例程序是 CXF+Struts+spring的...

有用的就看看.没用的就飘过!

 

1:类的编写(bean):

@XmlRootElement(name="customer")
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlType(propOrder={"name","age"})
public class Customer {
	
	private int age;
	private String name;
	
	
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	

 2:Service的编写:

@WebService
public interface HelloService {
	
	public void save(Customer c1,Customer c2);
	public void test(String args);
	public Customer get(int id);
}

HelloServiceImpl:

@WebService
public class HelloServiceImpl implements HelloService {

	public Customer get(int id) {
		Customer cus=new Customer();
		cus.setAge(100);
		cus.setName("LLLL");
		return cus;
	}

	public void save(Customer c1, Customer c2) {
		System.out.println(c1.getAge()+"-------"+c2.getAge());
		System.out.println(c1.getName()+"-------"+c2.getName());

	}

	public void test(String args) {
		System.out.println(args);

	}

3:spring配置..发布节点:

       <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="Customer" class="org.web.HelloServiceImpl"></bean>
	<jaxws:endpoint 
	  id="custom" 
	  implementor="#Customer" 
	  address="/web" />

PS:  web.xml配置:

 

 

	 <servlet>
	<servlet-name>CXFServlet</servlet-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>/web/*</url-pattern>
	</servlet-mapping>

		<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
			org.web.StrutsFilter
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>	

自己写的struts过滤器:

public class StrutsFilter extends FilterDispatcher {
public void init(FilterConfig filterConfig) throws ServletException {
		 super.init(filterConfig);
	 }
public void doFilter(ServletRequest req, ServletResponse res,   
		   FilterChain chain) throws IOException, ServletException {   
		 
		      String url = ((HttpServletRequest)req).getRequestURI();   
		      if (url.indexOf("fckeditor") < 0 && url.indexOf("web") < 0) {   
		             super.doFilter(req, res, chain);    
		       } else {   
		             chain.doFilter(req, res);   
		       }     
		    }   
}
 

 

 PS:struts会过滤掉cxf..即cxf会被认为是一个action..所以无法查看发布:

所以我自己写了一个Filter如上

这样就可以避免不能查看了!!!呵呵...

 

 

服务端算是完成:可以测试下:http://127.0.0.1:88/Hello/web

可以看见如下内容:

CXF

  4:客户端:

①:类的编写

action类的编写

@SuppressWarnings("serial")
public class SoapAction extends ActionSupport {
	private HelloService hello;
	
	public HelloService getHello() {
		return hello;
	}

	public void setHello(HelloService hello) {
		this.hello = hello;
	}

	public String test(){
		Customer c1=new Customer();
		c1.setAge(1);
		c1.setName("one");
		
		Customer c2=new Customer();
		c2.setAge(2);
		c2.setName("two");
		
		hello.save(c1, c2);
		hello.test("11111111111");
		
		return "success";
	}
}

struts的配置:

<action name="Test" method="test" class="test">
		 	<result name="success">/index.jsp</result>
</action>
 

spring的配置(重点!!)

<bean id="webTest" class="org.web.HelloService" factory-bean="client" factory-method="create"/>	
 <bean id="client" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
	 		<property name="serviceClass" value="org.web.HelloService"></property>
	 		<property name="address" value="http://127.0.0.1:88/Hello/web/web"></property>
	 </bean>
	 <bean id="test" class="org.web.SoapAction" >
	 		<property name="hello" ref="webTest"></property>
	 </bean>
 

好了发布测试:

http://127.0.0.1:88/Hello/Test.action

成功!!!

 

鼓掌!!!

 

 

 

 

 

代码已经上传!jar包由于过大的原因没有上传!

给了一个jar包的截图!!

 

 

  • 大小: 65.9 KB
分享到:
评论
5 楼 赵武艺 2012-08-10  
写得太乱了,配置文件都分不清那是服务器端的,那是客户端的?麻烦楼主把整个项目上传下?
4 楼 yule516 2011-03-01  
serviceClass="org.web.HelloService"这段不太理解,为什么org.web.HelloService要和服务端一致,不是知道的只有wsdl地址吗。按道理不知道rg.web.HelloService。
3 楼 wangchengyong 2010-06-03  
客户端的Spring配置要和服务端保持一致,更好理解,改进下

<!-- 客户端的配置 -->
<jaxws:client id="client" serviceClass="org.web.HelloService" address="http://127.0.0.1:88/Hello/web/web">
</jaxws:client>
2 楼 xbcoil 2010-05-25  
fisherhe 写道
<bean id="Customer" class="org.web.HelloServiceImpl"></bean>
这个是你自己幻想上去的?
实现类注解少了endpointInterface
你的逻辑很紊乱,完全不想看,所以你激动也没必要



请你仔细看看...

那个..下面不就是引用了他么!!!

    <bean id="Customer" class="org.web.HelloServiceImpl"></bean>
	<jaxws:endpoint 
	  id="custom" 
	  implementor="#Customer" 
	  address="/web" />




看下面的<jaxws:endpoint 里面的implementor的值就是    #Customer
     不是么???
和下面是一样的效果!!!

    
	<jaxws:endpoint 
	  id="custom" 
	  implementor="org.web.HelloServiceImpl" 
	  address="/web" />





1 楼 fisherhe 2010-05-25  
<bean id="Customer" class="org.web.HelloServiceImpl"></bean>
这个是你自己幻想上去的?
实现类注解少了endpointInterface
你的逻辑很紊乱,完全不想看,所以你激动也没必要

相关推荐

    spring+hibernate+struts2+webservice示例

    这是个采用apache cxf实现webservice的示例,主要由spring整合hibernate、struts2实现webservice,里面struts2用到得较少……对于学习很有帮助,另外我觉得若是初学者,不过采用那方式,现在按照套方案做熟练后再去...

    spring+hibernate+struts+XFire的webService实例

    本实例"Spring+Hibernate+Struts+XFire的WebService"提供了一个全面的框架整合,用于创建功能丰富的Web服务。以下将详细解析这个实例所涉及的技术点: 1. **Spring框架**:Spring是一个开源的Java平台,它为开发...

    CXF创建Webservice接口与Spring整合实例

    5. **整合SSH框架**:在上述示例中,我们已经使用了Spring来配置CXF。接下来,可以利用Spring的AOP(面向切面编程)来处理用户认证。创建一个切面类,使用`@Before`注解拦截登录请求,检查用户凭证。同时,可以利用...

    ssh+cxf整合发布webservice实例

    在SSH+CXF的整合中,Struts2负责视图层和控制层,Spring处理依赖注入和事务管理,Hibernate处理持久化操作,而CXF则作为Web服务的发布平台。这种组合使得开发人员能够利用SSH的成熟性和CXF的灵活性,轻松地创建和...

    java_webservice_JAX-RS.zip_cxf_jax_jax-rs_spring cxf

    文件"java webservice CXF JAX-WS(SOAP) + JAX-RS(RESTfull).docx"可能包含了具体的示例代码和详细步骤,帮助理解如何在SSH环境中集成并使用CXF和JAX-RS。建议参考文档中的内容进行实践操作,以加深理解。 总的来说...

    spring集成cxf的ws与rs

    在IT行业中,Spring框架以其强大的依赖注入和面向切面...在提供的`md_demo`和`ssm_arch_demo`文件中,可能包含了Spring、CXF和Struts的示例代码和配置,通过阅读和理解这些代码,可以更好地理解和实践上述集成过程。

    Spring整合CXF,发布RSETful 风格WebService

    在SSH(Spring、Struts、Hibernate)架构中,我们需要配置Spring上下文以便CXF能够识别和处理Web服务。这通常涉及到在Spring配置文件中定义CXF的Bus实例、服务端点接口和服务实现。例如,我们会创建一个CXF的Servlet...

    ssh+cxf webservices完整版

    【SSH+CXF Webservices 完整版】项目是一个基于Spring、Struts、Hibernate和CXF的Web服务实现。这个项目提供了完整的源码和必要的库文件(jar包),旨在帮助开发者快速理解和部署一个使用CXF进行Web服务开发的示例。...

    SSH CXF webservice 开发笔记demo(包含步骤文档及所需war包)

    SSH CXF Webservice 开发是Java企业级应用中常见的服务集成和发布技术。SSH是指Spring、Struts和Hibernate这三个开源框架的组合,它们分别负责控制层、视图层和持久层的功能。CXF则是一个流行的Java Web服务实现,...

    基于Flex三种通讯方式的Java配置与整合.docx

    - **Web层**:Spring-Flex 1.0.3 (AMF)、Struts 2.3.15.1 (Service)、CXF 2.7.6 (WebService) - **Service层**:Spring 3.1 - **DAO层**:Hibernate 3.3 #### AMF通讯方式配置 为了实现Flex客户端与Java服务器端的...

    使用SpringSide开发Web项目

    - **WebService**:支持Apache CXF 2.2下的JAX-WS/JAXB 2.0规范,同时兼容基于Jersey的JAX-RS规范。 - **安全性**:采用Spring Security 3.0确保应用的安全性。 #### SpringSide安装步骤 1. **下载**:下载...

    基于soa的E家园和个人通讯录

    通过实践,开发者可以掌握如何使用这些基本技术来构建一个完整的系统,这对于进一步学习Spring、Struts等高级框架,以及深入理解Web服务的原理和实践都是一个很好的起点。同时,对于没有框架经验的初学者,这是一个...

Global site tag (gtag.js) - Google Analytics