spring+cxf+hibernate  发布restful WebService服务

项目目录结构

项目下载路径: http://pan.baidu.com/s/1o6H06LW   (如果项目路径实效,可以qq找我,下面有我qq)

1、we b.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

id="WebApp_ID" version="2.5">

<display-name>SWEATTIME</display-name>

<!-- 加载 spring容器 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</context-param>

<listener>

<listener-class> org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<!-- 解决中文乱码问题 -->

<filter>

<filter-name>CharacterEncodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>utf-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CharacterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<!-- cxf的servlet -->

<servlet>

<servlet-name>cxf</servlet-name>

<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<!-- 本系统webservice的路径必须以/ws/开头 -->

<servlet-mapping>

<servlet-name>cxf</servlet-name>

<url-pattern>/ws/*</url-pattern>

</servlet-mapping>

</web-app>

2、applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:jaxws="http://cxf.apache.org/jaxws"

xmlns:jaxrs="http://cxf.apache.org/jaxrs"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:cache="http://www.springframework.org/schema/cache"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx-3.1.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-3.1.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.1.xsd

http://www.springframework.org/schema/cache

http://www.springframework.org/schema/cache/spring-cache-3.1.xsd

http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd

http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd

http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd

http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd">

<!--

引入properties配置文件

-->

<context:annotation-config />

<context:component-scan base-package="cn.xiaoke.ws.cxf.rest" /><!-- 改为你的包名 -->

<aop:aspectj-autoproxy />

<tx:annotation-driven />

<bean

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="locations">

<value>classpath:jdbc.properties</value>

</property>

</bean>

<bean id="dataSource" destroy-method="close"

class="org.apache.commons.dbcp.BasicDataSource">

<property name="driverClassName" value="${jdbc.driverClassName}" />

<property name="url" value="${jdbc.url}" />

<property name="username" value="${jdbc.username}" />

<property name="password" value="${jdbc.password}" />

</bean>

<bean id="sessionFactory"

class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

<property name="dataSource" ref="dataSource" />

<!-- hibernate自身属性 -->

<property name="hibernateProperties">

<props>

<prop key="hibernate.show_sql">true</prop>

<prop key="hibernate.format_sql">true</prop>

<prop key="hibernate.dialect">

org.hibernate.dialect.MySQLDialect

</prop>

<prop key="hibernate.hbm2ddl.auto">create</prop>

</props>

</property>

<!-- Hibernate配置文件 -->

<property name="configLocation">

<value>classpath:hibernate.cfg.xml</value>

</property>

<property name="packagesToScan">

<value>

cn.xiaoke.ws.cxf.rest.pojo*  <!-- 改为你的包名 -->

</value>

</property>

</bean>

<!-- 用于指定持久化实现厂商类 -->

<!-- 配置HibernateTemplate -->

<bean name="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

<!-- 配置声明式的的事务管理(基于注解的配置方式) -->

<bean id="transactionManager"

class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory" />

</bean>

<tx:annotation-driven transaction-manager="transactionManager" />

<bean id="studentService" class="cn.xiaoke.ws.cxf.rest.service.impl.StudentServiceImpl"/>

<bean id="teacherService" class="cn.xiaoke.ws.cxf.rest.service.impl.TeacherServiceImpl"/>

<!-- 发布rest服务

使用jaxws:server和jaxws:endpoint可以发布服务

webservice地址=tomcat地址+cxf servlet的路径+/weather

-->

<jaxrs:server address="/rest">

<jaxrs:serviceBeans>

<ref bean="studentService"/>

<ref bean="teacherService"/>

</jaxrs:serviceBeans>

</jaxrs:server>

</beans>


3、hebernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<mapping class="cn.xiaoke.ws.cxf.rest.pojo.Student" />

<mapping class="cn.xiaoke.ws.cxf.rest.pojo.Teacher" />

</session-factory>

</hibernate-configuration>

4、jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.url=jdbc\:mysql\://localhost\:3306/RestWs

jdbc.username=root

jdbc.password=

5、StudentService.java

package cn.xiaoke.ws.cxf.rest.service;

import java.util.List;

import javax.jws.WebService;

import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.PathParam;

import javax.ws.rs.Produces;

import javax.ws.rs.core.MediaType;

import cn.xiaoke.ws.cxf.rest.pojo.Student;

/**

*

* @author 柯木超

* @QQ  751776425

* 邮箱  [email protected]

* @version 1.0

*/

@WebService

@Path("/student")

public interface StudentService {

//查询学生信息

@GET //http的get方法

@Path("/query/{id}")//id参数通过url传递

@Produces({"application/json;charset=utf-8", MediaType.APPLICATION_JSON})//设置媒体类型xml格式

public Student queryStudent(@PathParam("id")long id);

//查询学生列表

@GET //http的get方法

@Path("/querylist/{type}")

@Produces({"application/json;charset=utf-8",MediaType.APPLICATION_JSON})//设置媒体类型xml格式和json格式

//如果想让rest返回xml需要在rest的url后边添加?_type=xml,默认为xml

//如果想让rest返回json需要在rest的url后边添加?_type=json

public List<Student> queryStudentList(@PathParam("type") String type);

}

6、StudentServiceImpl.java

package cn.xiaoke.ws.cxf.rest.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

import cn.xiaoke.ws.cxf.rest.dao.StudentDao;

import cn.xiaoke.ws.cxf.rest.pojo.Student;

import cn.xiaoke.ws.cxf.rest.service.StudentService;

@Transactional

@Service("studentService")

public class StudentServiceImpl implements StudentService {

@Resource

private StudentDao studentDao;

@Override

public Student queryStudent(long id) {

return studentDao.queryStudent(id);

}

@Override

public List<Student> queryStudentList(String type) {

return studentDao.queryStudentList(type);

}

}

7、TeacherService.java

package cn.xiaoke.ws.cxf.rest.service;

import java.util.List;

import javax.jws.WebService;

import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.PathParam;

import javax.ws.rs.Produces;

import javax.ws.rs.core.MediaType;

import cn.xiaoke.ws.cxf.rest.pojo.Teacher;

/**

*

* @author 柯木超

* @QQ  751776425

* 邮箱  [email protected]

* @version 1.0

*

*/

@WebService

@Path("/teacher")

public interface TeacherService {

//查询学生信息

@GET //http的get方法

@Path("/query/{id}")//id参数通过url传递

@Produces(MediaType.APPLICATION_XML)//设置媒体类型xml格式

public Teacher queryTeacher(@PathParam("id")long id);

//查询学生列表

@GET //http的get方法

@Path("/querylist/{type}")

@Produces({"application/json;charset=utf-8",MediaType.APPLICATION_ATOM_XML})//设置媒体类型xml格式和json格式

//如果想让rest返回xml需要在rest的url后边添加?_type=xml,默认为xml

//如果想让rest返回json需要在rest的url后边添加?_type=json

public List<Teacher> queryTeacherList(@PathParam("type") String type);

}

8、TeacherServiceImpl.java

package cn.xiaoke.ws.cxf.rest.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

import cn.xiaoke.ws.cxf.rest.dao.TeacherDao;

import cn.xiaoke.ws.cxf.rest.pojo.Teacher;

import cn.xiaoke.ws.cxf.rest.service.TeacherService;

@Transactional

@Service("teacherService")

public class TeacherServiceImpl implements TeacherService {

@Resource

private TeacherDao teacherDao;

@Override

public Teacher queryTeacher(long id) {

return teacherDao.queryTeacher(id);

}

@Override

public List<Teacher> queryTeacherList(String type) {

return teacherDao.queryTeacherList(type);

}

}

时间: 2024-10-29 00:26:53

spring+cxf+hibernate  发布restful WebService服务的相关文章

CXF+Spring+Hibernate实现RESTful webservice服务端实例

1.RESTful API接口定义 /* * Copyright 2016-2017 WitPool.org All Rights Reserved. * * You may not use this file except in compliance with the License. * A copy of the License is located at * http://www.witpool.org/licenses * * or in the "license" file

自定义及发布一个webservice服务

自定义及发布一个webservice服务    - 声明 某个业务服务为webservice服务       通过@webservice 注解来声明    - 发布webservice服务       Endpoint.publish()发布 (默认对public修饰的方法进行发布)    - 通过wsimport生成本地代理来访问自己发布的webservice       wsimport 1.发布自定义webservice phone.java package ws.myWebService

java程序调用xfire发布的webService服务(二)

在上一篇的调用xfire发布的webService服务中,我只是从服务端返回了一个字符串给客户端,却没有测试从客户端传递数据给服务端.而实际应用中一般是不太可能只出现这样的应用场景的,因此我便更进一步测试了客户端传递数据给服务端. 因为相关的jar包在上一篇已经说过,因此便不再重复说明,这次的测试步骤如下: 一.测试向服务端传递字符串(重点在第二个): 为了进一步理解服务搭建,我重新写了一个服务端服务类: 接口: package xfireTest; public interface XFire

SpringBoot实战(十)之使用Spring Boot Actuator构建RESTful Web服务

一.导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.

Spring+CXF+Maven发布Webservice

使用CXF发布WebService简单又快速,还可以与Spring集成,当Web容器启动时一起发布WebService服务.本例是简单的客户端给服务端发送订单信息,服务端返回订单转为json的字符串. 1.使用maven管理jar包,首先在maven添加使用到的cxf jar包依赖,到CXF官网上找到Maven的依赖内容. 网址如下:http://cxf.apache.org/docs/using-cxf-with-maven.html 我使用的是Tomcat所以引用前两项就可以了 <depen

WebService -- Java 实现之 CXF ( 使用:Spring+CXF+Tomcat发布webService)

1. 新建一个Maven项目,选择webapp模板,命名为WS_Spring_CXF_Tomcat 2. 在POM.xml中添加Spring和CXF的依赖 <!-- 添加 Spring dependency --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.7.R

基于SSM+CXF构建的RESTFul webservice

开发环境:maven3.3.3.apache-tomcat-6.0.44.jdk1.6.0_13 开发技术:spring3.2.8.cxf2.7.12.mybatis3.2.8.druid1.0.11 项目截图: 项目源码: 一.配置文件 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quo

Eclipse + Jersey 发布RESTful WebService(一)了解Jersey

2018-4-6 OK,我得承认,是因为Axis2没走通,所以改了用Jersey,因为之前一次用过觉得还挺容易用. 具体Jersey是什么,目前完全不了解,接下来1天时间来试试看. -- 怎么着都不成 一.下文中需要的资源地址汇总 Apache Maven Apache网站 http://maven.apache.org/ Maven下载地址: http://maven.apache.org/download.cgi Jersey Jersey(JAX-RS 2.1 / Jersey 2.26+

【jersey】 spring 整合jersey 实现RESTful webservice

Jersey是一个RESTFUL请求服务JAVA框架,与常规的JAVA编程使用的struts框架类似,它主要用于处理业务逻辑层.与Struts类似,它同样可以和hibernate,spring框架整合. 由于Struts2+hibernate+spring整合在市场的占有率太高,所以很少一部分人去关注Jersey.所以网上有关于Jersey的介绍很少.但是它确实是一个非常不错的框架.对于请求式服务,对于GET,DELETE请求,你甚至只需要给出一个URI即可完成操. jar 文件依赖: <pro