加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

cxf webservice执行数据库操作

发布时间:2020-12-16 22:45:06 所属栏目:安全 来源:网络整理
导读:cxf webservice执行数据库操作,做个笔记,以免以后忘了。 IUserService.java public interface IUserService { public User getUser (User user); public void addUser (User user); public User getUserByUsername (String username);} UserServiceImpl.ja

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:UsersIBM_ADMIN>C:JavaWebapache-cxf-3.0.4binwsdl2java.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();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读