cxf webservice执行数据库操作

原创 2015年07月10日 15:00:22

cxf webservice执行数据库操作,做个笔记,以免以后忘了。

IUserService.java

public interface IUserService {
    public User getUser(User user);
    public void addUser(User user);
    public User getUserByUsername(String username);
}

UserServiceImpl.java

public class UserServiceImpl implements IUserService {

    @Resource(name="userDao")
    public UserDao userDao;

    public User getUser(User user) {
        return userDao.getUser(user);
    }

    public void addUser(User user) {
        userDao.saveOrUpdateEntity(user);
    }

    public User getUserByUsername(String username) {
        return userDao.getUserByUsername(username);
    }
}

接下来写webservice的接口。从webservice的接口调用你项目里的非webservice的接口。
IUserWebService.java

import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

import model.User;

@WebService
@SOAPBinding(style=Style.RPC)
public interface IUserWebService {
    public User getUser(@WebParam(name="user")User user);

    public void addUser(@WebParam(name="user")User user);

    public User getUserByUsername(@WebParam(name="username")String username);
}

接口的实现方法:
UserWebService.java

import iservice.IUserService;
import iservice.IUserWebService;

import javax.annotation.Resource;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

import model.User;
@WebService
@SOAPBinding(style = Style.RPC)
public class UserWebService implements IUserWebService {
    @Resource
    private IUserService userService;

    public User getUser(User user) {
        System.out.println("go into webservice...");
        User u = userService.getUser(user);
        return u;
    }

    public void addUser(User user) {
        userService.addUser(user);
    }

    public User getUserByUsername(String username) {
        return userService.getUserByUsername(username);
    }
}

配置文件applicationContext-cxf.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">

    <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="userServiceBean" class="cxf.UserWebService" />

    <!-- 
    <bean id="inMessageInterceptor" class="com.hoo.interceptor.MessageInterceptor">
        <constructor-arg value="receive" />
    </bean>
     -->
    <bean id="inMessageInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor">
    </bean>

    <bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
    <!-- 注意下面的address,这里的address的名称就是访问的WebService的name -->
    <jaxws:server id="userWebService" serviceClass="iservice.IUserWebService" address="/UserWebS">
        <jaxws:serviceBean>
            <!-- 要暴露的 bean 的引用 -->
            <ref bean="userServiceBean" />
        </jaxws:serviceBean>
    </jaxws:server>

</beans>

在web.xml中添加:

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

    <servlet-mapping>
        <servlet-name>CXFService</servlet-name>
        <url-pattern>/ws/*</url-pattern>
    </servlet-mapping>

在web容器中发布后的webservice的访问路径:
http://localhost:8081/SSH2/ws/UserWebS?wsdl

然后创建客户端:
可以通过命令生成客户端代码:
需要用到cxf的的bat生成接口的类,把生成的类拷到自己工程中,然后在自己的客户端调用。
C:\Users\IBM_ADMIN>C:\JavaWeb\apache-cxf-3.0.4\bin\wsdl2java.bat http://localhost:8081/SSH2/ws/UserWebS?wsdl
用这个命令就可以生成客户端的类供接口调用

方法二:也可以用myeclipse中WSDL Client生成客户端代码。

====================================
客户端访问server端:
Util.java

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

public class Util {

    public static Object getService(Class clazz, String url){
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        Object srv = null;
        factory.setServiceClass(clazz);
        factory.setAddress(url);
        srv = factory.create();
        return srv;
    }
}

UtilWebService.java

import test.webservice.IUserWebService;

public class UtilWebService {

    public static IUserWebService getUserWebService(){
        String url = "http://localhost:8081/SSH2/ws/UserWebS?wsdl";
        IUserWebService service = (IUserWebService) Util.getService(IUserWebService.class, url);
        return service;
    }
}

UserClientTest.java

import test.webservice.IUserWebService;
import test.webservice.User;
import webUtil.UtilWebService;

public class UserClientTest {

    private IUserWebService userWebS;

    public void getUser(){
        User user = new User();
        user.setPassword("ldx");
        user.setUsername("ldx");
        User u = userWebS.getUser(user);
        System.out.println(u.getUid());
    }

    public void getUserByName(String username){
        User u = userWebS.getUserByUsername(username);
        System.out.println(u.getPassword());
    }

    public void addUser(){
        User u = new User();
        u.setPassword("lrh");
        u.setUsername("lrh");
        userWebS.addUser(u);
    }

    public static void main(String[] args) {
        UserClientTest test = new UserClientTest();
        test.userWebS = UtilWebService.getUserWebService();
        test.getUser();
        test.getUserByName("lrh");
        test.addUser();
    }
}

webServiceCXF+spring_访问数据库的实例

  • 2012年02月22日 16:50
  • 17KB
  • 下载

CXF实现webService服务(一)

以前工作中也用CXF,但都是用别人现成搭好的环境,这次自己重头搭建一遍环境。过程中也有遇到的问题,也做了简单的整理。 对于CXF是干什么用的,我不想多说,大家都知道这是我们在java编程中webSe...
  • hu_shengyang
  • hu_shengyang
  • 2014年08月05日 14:04
  • 59640

用WebService实现对数据库进行操作(添加+删除+修改)

表为User,字段有 编号: int id,用户名:string UserName,密码:string UserPwd    ///     /// 添加           ///   ...
  • beyondqd
  • beyondqd
  • 2011年08月19日 21:24
  • 9879

使用CXF发布WebService服务简单实例

一、说明: 前面介绍了使用axis2来发布Webservice服务,现在介绍一种更popular,更高效的Webservice服务发布技术:CXF Apache CXF = Celtix + XFi...
  • kris234seth
  • kris234seth
  • 2016年01月11日 18:00
  • 2193

webservice[CXF]发布和调用[ 带数据库]demo

  • 2016年12月06日 09:01
  • 41.63MB
  • 下载

cxf webservice执行数据库操作

cxf webservice执行数据库操作,做个笔记,以免以后忘了。IUserService.javapublic interface IUserService { public User g...
  • tuoxinquyu
  • tuoxinquyu
  • 2015年07月10日 15:00
  • 708

JAVA 用 Apache CXF 调用 .NET 服务端 WebService

Web Service涉及的相关概念和基础知识不赘述了,想了解的请看这篇文章:http://blog.csdn.net/shb_derek/article/details/8018287 下面从头开...
  • wqmain
  • wqmain
  • 2012年11月23日 15:41
  • 7567

【WebService框架-CXF】——WebService和CXF

在接下来的几篇博客中将对CXF的基础知识和简单应用进行总结。下面列出了要总结的内容。本篇文章集中介绍CXF的基础知识。 CXF博客总结目录WebService和CXF基础知识 CXF入门实例(编写客...
  • u010924834
  • u010924834
  • 2016年06月12日 09:21
  • 1338

CXF提供Client调用WebService接口的方法

1、 JaxWsProxyFactoryBean     简介:调用方式采用了和RMI类似的机制,即客户端直接服务器端提供的服务接口(interface),CXF通过运行时代理生成远程服务的代理对象...
  • a128953ad
  • a128953ad
  • 2015年11月18日 12:03
  • 18959

使用CXF框架开发WebService客户端

上一篇讲了使用cxf开发了webservice服务器端接口,这篇我们来开发webservice客户端 然后我们要用CXF给我们提供的工具wsdl2java 来根据请求的url生成客户端代码; wsd...
  • qq_18895659
  • qq_18895659
  • 2016年07月10日 23:30
  • 8027
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cxf webservice执行数据库操作
举报原因:
原因补充:

(最多只允许输入30个字)