`

webservice cxf简单案例

 
阅读更多
cxf简单java项目案例

IHelloWorld.java
package com.chen.ws;

import java.util.List;
import java.util.Map;

import javax.jws.WebService;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

import com.chen.adapter.AuthXmlAdapter;
import com.chen.pojo.Pet;
import com.chen.pojo.User;

@WebService
public interface IHelloWorld {
	public String hello();
	
	public List<Pet> getPetsByUser(User user);
	
	/*
	 * cxf不直接Map<String,Pet>类型,需要自己实现转换器
	 */
	@XmlJavaTypeAdapter(AuthXmlAdapter.class)public Map<String,Pet> getAllPets();
}



实现类HelloWorldImpl.java
package com.chen.ws.impl;

import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.jws.WebService;

import com.chen.pojo.Pet;
import com.chen.pojo.User;
import com.chen.service.UserService;
import com.chen.ws.IHelloWorld;
@WebService(endpointInterface="com.chen.ws.IHelloWorld",
			serviceName="HelloWorldImpl")
public class HelloWorldImpl implements IHelloWorld {

	@Override
	public String hello() {
		return "hello world! date:"+new Date();
	}

	@Override
	public List<Pet> getPetsByUser(User user) {
		UserService userService = new UserService();
		return userService.getPetsByUser(user);
	}

	@Override
	public Map<String, Pet> getAllPets() {
		UserService userService = new UserService();
		return userService.getAllPets();
	}

}



发布服务demo.java
package com.chen.demo;

import java.io.IOException;
import java.io.PrintWriter;

import javax.xml.ws.Endpoint;

import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.EndpointImpl;

import com.chen.interceptor.AuthInterceptor;
import com.chen.ws.IHelloWorld;
import com.chen.ws.impl.HelloWorldImpl;

public class ServiceMain {
	public static void main(String[] args) throws IOException{
		IHelloWorld hw = new HelloWorldImpl();
		EndpointImpl ep = (EndpointImpl) Endpoint.publish("http://132.126.1.98/helloDemo", hw);
		
		//PrintWriter pi = new PrintWriter("D:/chen/work/framework/cxf_demo01/src/in.txt");
		//PrintWriter po = new PrintWriter("D:/chen/work/framework/cxf_demo01/src/out.txt");
		//添加拦截器
		//ep.getInInterceptors().add(new LoggingInInterceptor());
		//ep.getOutInterceptors().add(new LoggingOutInterceptor());
		ep.getInInterceptors().add(new AuthInterceptor());
		
		System.out.println("发布成功!");
	}
}



客户端
通过cmd,到指定目录执行 wsdl2java http://132.126.1.98/helloDemo?wsdl
得到客户端相关代码

客户端调用服务Demo.java
package com.chen.demo;

import java.util.List;

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.interceptor.LoggingOutInterceptor;

import com.chen.interceptor.AuthInterceptor;
import com.chen.ws.Entry;
import com.chen.ws.IHelloWorld;
import com.chen.ws.Pet;
import com.chen.ws.StringPet;
import com.chen.ws.User;
import com.chen.ws.impl.HelloWorldImpl;

public class ClientMain {
	public static void main(String[] args) {
		HelloWorldImpl factory = new HelloWorldImpl();
		IHelloWorld hw = factory.getHelloWorldImplPort();
		
		//添加拦截器
		Client client = ClientProxy.getClient(hw);
		//client.getInInterceptors().add(new LoggingInInterceptor());
		client.getOutInterceptors().add(new LoggingOutInterceptor());
		client.getOutInterceptors().add(new AuthInterceptor("chen","chen"));
		
		System.out.println(hw.hello());

		User u1 = new User();
		u1.setId(1L);
		u1.setName("chen1");
		List<Pet> pets = hw.getPetsByUser(u1);
		for(Pet obj : pets){
			System.out.println(obj.getName());
		}
		
		StringPet res  = hw.getAllPets();
		for(Entry entry : res.getEntries()){
			System.out.println(entry.getKey()+": "+entry.getValue().getId()+" "+entry.getValue().getName());
		}
		
	}
}





cxf+spring
服务器端

applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:p="http://www.springframework.org/schema/context"   
    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://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd  
        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
    	">
    <!-- (4)、导入cxf提供的Schema,XML配置文件 jaxws-->
    <!-- web应用的类加载路径classpath有两类:
    	A、WEB-INF/classes目录
    	B、WEB-INF/lib目录下
     -->
    <!-- (5)、导入cxf配置文件 -->
    <import resource="classpath:META-INF/cxf/cxf.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
    
    <!-- (6)、配置endpoint 
    	implementor 服务提供者
    		两种形式
    		A:直接给定服务提供者的类名(不能使spring自动注入) com.chen.ws.impl.HelloWorldImpl
    		B:设置为一个bean引用,要在bean的id前加上#
    	address 发布地址
    -->
    <bean id="helloWorld" class="com.chen.ws.impl.HelloWorldImpl">
    	<property name="userService" ref="userService" />
    </bean>
    <jaxws:endpoint 
    	implementor="#helloWorld" 
    	address="/helloDemo">
    	<!-- (8)、添加拦截器 -->
    	<jaxws:inInterceptors>
    		<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
    	<bean class="com.chen.interceptor.AuthInterceptor"></bean> 
    	</jaxws:inInterceptors>
    </jaxws:endpoint>
    
    <!-- (7)、配置业务层service bean -->
    <bean id="userService" class="com.chen.service.UserService"/>
    
    
    	
</beans>



客户端
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:p="http://www.springframework.org/schema/context"   
    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://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd  
        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
    	">
    <!-- (4)、导入cxf提供的Schema,XML配置文件 jaxws-->
    <!-- web应用的类加载路径classpath有两类:
    	A、WEB-INF/classes目录
    	B、WEB-INF/lib目录下
     -->
    <!-- (5)、导入cxf配置文件 -->
    <import resource="classpath:META-INF/cxf/cxf.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
    
    <!-- (6)、配置client 
    	 
    -->
    <jaxws:client id="hw" 
     		serviceClass="com.chen.ws.IHelloWorld"
     		address="http://132.126.1.98/helloDemo">
    	<jaxws:outInterceptors>
    		<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
    		<bean class="com.chen.interceptor.AuthInterceptor">
    			<constructor-arg value="chen"/>
    			<constructor-arg value="chen"/>
    		</bean>
    	</jaxws:outInterceptors>
    </jaxws:client> 
    
     
    
    
    	
</beans>


测试demo.java
package com.chen.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.chen.ws.IHelloWorld;

@Controller
@RequestMapping("/demo")
public class DemoController {
	@Autowired
	private IHelloWorld hw ;
	 
	@RequestMapping("hello")
	public String hello(){
		
		hw.hello();
		
		return "hello";
	}
	
}



详情看源码
分享到:
评论

相关推荐

    webservice cxf 开发实战

    1. **SOAP与RESTful支持**:CXF支持两种主流的Web服务标准,即SOAP(简单对象访问协议)和REST(代表性状态转移)。SOAP主要用于复杂、事务性业务逻辑,而REST则适用于轻量级、资源导向的服务。 2. **JAX-WS和JAX-...

    Webservice笔记含使用cxf和jaxws两种方式开发webservice【源代码+笔记】

    第一天: 什么是webservice? 从案例(便民查询网站)分析如何实现? 使用socket实现。 使用jaxws开发webservice。 Webservice三要素 ... CXF发布rest的webservice。(重点) 综合案例: 实现便民查询网站

    cxf 小案例 java webservice

    【CXF小案例:Java WebService详解】 在Java开发中,Apache CXF是一个非常流行的开源框架,用于构建和消费Web服务。本篇文章将深入探讨如何使用CXF来创建一个简单的Java WebService,并介绍相关的知识点。 一、...

    JDK+CXF实现webservice简单案例

    在这个"JDK+CXF实现webservice简单案例"中,我们将探讨如何利用Java JDK和Apache CXF框架来创建和消费Web服务。 首先,JDK是Java Development Kit的缩写,它是开发和运行Java应用程序的基础。在这里,JDK提供了基础...

    CXF+Spring+Hibernate实现WebService

    **WebService实现**:在CXF的帮助下,我们可以通过以下步骤实现一个WebService: 1. **定义服务接口**:首先,我们需要定义一个Java接口,包含要暴露给客户端的方法。 2. **创建服务实现**:然后,实现该接口,具体...

    WebService手写简单案例

    在本案例中,我们将探讨如何手写一个简单的WebService,并理解其核心组件和服务的工作原理。 首先,我们要知道WebService的核心协议是SOAP(Simple Object Access Protocol),它定义了消息格式,使得应用程序可以...

    CXF搭建webservice案例

    这就是一个简单的CXF搭建Web服务案例。通过这个案例,你可以学习到如何使用CXF创建Web服务,包括定义接口、实现服务、配置Servlet以及生成客户端代码。这个过程有助于理解Web服务的工作原理,同时,CXF的易用性和...

    cxf实现webservice的项目实例

    【标题】:CXF实现Web服务(WebService)的项目实例详解 在当今的软件开发中,Web服务扮演着重要的角色,它允许不同系统之间通过网络进行数据交换和功能调用。CXF是一个开源的Java框架,它使得开发和集成Web服务变...

    maven项目 cxf webservice

    通常,一个名为"cxfDemo"的文件可能包含了一个简单的CXF Web服务的实现,可能包括服务接口定义、实现类、配置文件以及Maven的pom.xml文件等组成部分。 在这个项目中,开发者可能会经历以下步骤: 1. **设置Maven...

    webservice之cxf实例

    接着,我们将通过一个简单的示例,展示如何使用CXF生成服务接口、实现服务逻辑、发布服务,并且配置客户端调用这些服务。 首先,让我们创建服务接口。在Java中,我们可以使用JAX-WS注解来定义服务接口,比如`@...

    ssh整合cxf(webservice)

    ssh框架整合cxf(webservice),ssh案例(增、删、改、查),发布webservice,客户端调用,该工程自带jar包,mysql连接池,自动建库、建表。 ①直接解压,导入ssh2cxf项目 ②用tomcat启动ssh2cxf项目 ③在浏览器输入...

    webservice+cxf+spring

    【标题】:“WebService+CXF+Spring”是一个关于在Java环境中使用Apache CXF框架与Spring框架集成实现Web服务的专题。Apache CXF是一个开源的Web服务框架,它允许开发人员创建和部署SOAP和RESTful Web服务。Spring...

    WebService技术手册 CXF&XFire

    - **CXF实用手册.pdf**:此手册涵盖了CXF的全面知识,从安装配置到实战案例,深入浅出地讲解了如何利用CXF构建和管理WebService,是CXF开发者的重要参考文献。 通过以上内容,你可以全面了解并掌握WebService的基础...

    springboot+cxf实现webservice示例

    springboot+cxf实现webservice示例 &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-web &lt;!-- CXF ...

    cxf实用案例代码helloworld

    在这个“cxf实用案例代码helloworld”中,我们将深入探讨如何使用CXF来实现一个简单的 HelloWorld 示例,这对于初学者理解CXF的工作原理非常有帮助。 一、CXF简介 Apache CXF是基于Java的Web服务开发框架,它提供...

    cxf做的webservice对外提供接口调用

    【标题】:“cxf做的webservice对外...对于学习和理解如何使用CXF开发和发布Web服务,这个项目是一个很好的实践案例。开发者可以通过分析源码、配置文件以及测试代码,了解Web服务的完整生命周期,从而提升自己的技能。

Global site tag (gtag.js) - Google Analytics