myeclipse上spring+mybatis+axis2发布webservice接口的问题及个人实现的方式

前提:

这个月的突然一天,有个项目对接需要使用axis2发布的接口,这下难倒我了,毕竟之前我是连webservice接口都不知怎么发布的。后来从HelloWorld开始发布了第一个接口--sayHi();到这一步的时候都是很顺利的,唯独和axis2整合的时候,出现问题了,spring的dao层在axis2发布后的接口里,一直为null,貌似是spring一直没有被初始化,这期间我测试过按照正常流程来执行一个请求,是正确的,唯独和axis2整合后就不行了,在这测试的时间内,很痛苦,很痛苦,所有能想到的方法都一一试过了,包括强制获取dao和单例模式,然而然并卵。于是只好退而求其次,先用spring+mybatis+cxf发布一个可以使用的接口作为代理,再用axis2框子单独发布一个调用代理的方法来达到项目对接。下面开始介绍spring+mybatis+cxf:

一,创建工程目录:

首先,我们建一个实体类Person.java

package com.srit.user.model;

public class Person {
    private String id;
    private String name;
    private int age;
    private String birthday;
    private double hight;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getBirthday() {
        return birthday;
    }
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
    public double getHight() {
        return hight;
    }
    public void setHight(double hight) {
        this.hight = hight;
    }
}

接着我们先来写dao里的PersonDao.java,它是个接口interface ,主要是执行简单的增,删,改,查

package com.srit.user.dao;

import java.util.List;

import javax.jws.WebMethod;
import javax.jws.WebService;

import com.srit.user.model.Person;
public interface PersonDao {
    public void insertPerson(Person person);
    public void updatePerson(Person person);
    public List<Person> findPerson(String name);
    public void deletePerson(String id);
}

下面是dao层的实现类PersonDaoImpl.java

 1 package com.srit.user.dao.impl;
 2
 3 import java.util.List;
 4
 5 import javax.annotation.Resource;
 6
 7 import org.mybatis.spring.SqlSessionTemplate;
 8 import org.mybatis.spring.support.SqlSessionDaoSupport;
 9
10 import com.srit.user.dao.PersonDao;
11 import com.srit.user.model.Person;
12
13 public class PersonDaoImpl extends SqlSessionDaoSupport implements PersonDao {
14
15     private SqlSessionTemplate sqlSessionTemplate;
16
17     public SqlSessionTemplate getSqlSessionTemplate() {
18         return sqlSessionTemplate;
19     }
20
21     @Resource(name="sqlSessionTemplate")
22     public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
23         this.sqlSessionTemplate = sqlSessionTemplate;
24     }
25
26     public void deletePerson(String id) {
27         getSqlSession().delete("com.srit.usr.dao.PersonDao.deletePerson", id);
28     }
29
30     public List<Person> findPerson(String name) {
31         return getSqlSession().selectList("com.srit.user.dao.PersonDao.findPerson", name);
32     }
33
34     public void insertPerson(Person person) {
35         getSqlSession().insert("com.srit.user.dao.PersonDao.insertPerson", person);
36     }
37
38     public void updatePerson(Person person) {
39         getSqlSession().update("com.srit.user.dao.PersonDao.updatePerson", person);
40     }
41
42
43 }

接着是service层PersonService.java

package com.srit.user.service;

import java.util.List;

import com.srit.user.model.Person;

public interface PersonService {
        public void insertPerson(Person person);
        public void updatePerson(Person person);
        public List<Person> findPerson(String name);
        public void deletePerson(String id);
}

紧接着便是service层的实现类了PersonServiceImpl.java

package com.srit.user.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;

import com.srit.user.dao.PersonDao;
import com.srit.user.model.Person;
import com.srit.user.service.PersonService;

@Service
@Transactional
public class PersonServiceImpl implements PersonService {  

    @Resource
    private PersonDao personDao;  

    public PersonDao getPersonDao() {
        return personDao;
    }
    public void setPersonDao(PersonDao personDao) {
        this.personDao = personDao;
//        WebApplicationContext context=ContextLoader.getCurrentWebApplicationContext();
//        personDao =(PersonDao)context.getBean("personDao");
    }  

    public void deletePerson(String id) {
        personDao.deletePerson(id);
    }  

    public List<Person> findPerson(String name) {
        return personDao.findPerson(name);
    }  

    public void insertPerson(Person person) {
        personDao.insertPerson(person);
    }  

    public void updatePerson(Person person) {
        personDao.updatePerson(person);
    }  

}

然后就是我们要发布的service接口了MyWebservice.java

1 package com.srit.user.webservice;
2
3 import com.srit.user.model.Person;
4
5 public interface MyWebservice {
6     public String czDate(Person person);
7 }

当然必须有它的实现类MyWebserviceImpl.java

下班了  。。。下次接着写

时间: 2024-12-25 00:39:17

myeclipse上spring+mybatis+axis2发布webservice接口的问题及个人实现的方式的相关文章

spring,cxf,restful发布webservice传递List,Map,List&lt;Map&gt;

上一篇文章中概述了怎么在Javaweb中发布webservice,这篇文章讲解怎么传递复杂的对象 所用的jar包如下 当服务器返回的是List或者是Map时,一定要将其封装在一个类中, 首先创建封装类,封装了List,Map对象,以及自定义的User类 User.java public class User { private String name; private int age; public User() { } public User(String name, int age) { t

Axis2发布webservice(1)--0配置发布

Axis2发布webservice(1)--0配置发布webservice 一. 准备工作 1.下载axis2程序包:   http://axis.apache.org/axis2/java/core/download.cgi      下载时选择Binary Distribution版本的zip格式文件和WAR Distribution的zip格式文件,总共2个zip文件:      axis2-1.6.2-bin.zip:包含axis2是所有jar包,再编程时根据需要将解压后的lib文件夹下

JAVA利用axis2发布webservice

Axis2与CXF是现在很主流的WebService开发框架(java6也已经支持了),项目上还都是基本上用前两种做开发,今天记录一下我安装Axis2插件在eclipse中的安装和写一个简单的测试代码. 一. eclipse的版本为Luna Release (4.4.0) Axis2的版本是1.6.2 下载地址为: 1).Axis2 Binary Distribution(1.6.2):http://mirror.bjtu.edu.cn/apache//axis/axis2/java/core/

Spring 集合cxf发布webservice

通过spring发布webservice接口 spring jar包+cxf jar Java包 以下文件缺少jar包需要自行去下载 项目结构 1.实体类 package com.test.entity; public class User { public User(String name, String pwd, String sex) { super(); this.name = name; this.pwd = pwd; this.sex = sex; } private String

Axis2发布webservice(2)--利用eclipse的axis2插件打包为arr发布

一.编写webservice的java文件 在eclipse中新建java project,然后新建一个java类,我这里命名为:ManagerUserService.java,源代码: package com.hoo.service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import

Axis2发布webservice(4)&mdash;利用XML文件同时发布多个webservice和跨多个WebService管理Session

我们需要ServiceGroupContext保存跨越多个webservice的session信息:同时需要设置services.xml文件的中service的scope属性为application 一.编写两个webservice: LoginServiceApplication.java代码如下: package com.hoo.service; import org.apache.axis2.context.MessageContext; import org.apache.axis2.c

Axis2发布webservice(4)&mdash;webservice的异步调用

一,发布一个webservice,代码如下 package com.hoo.service; public class AsynchronousService { public String execute() throws InterruptedException{ //让当前线程睡眠5钟,展示异步调用 Thread.sleep(5000); return "done"; } } 二.发布Service,参见前面教程,不多讲 三.RPC方式异步调用: import java.io.I

Axis2 调用Webservice 接口

1,先学会部署环境,搭建Axis2环境. http://blog.csdn.net/lanqibaoer/article/details/22731291 现在调用一个现有的公共webservice接口,http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?op=TranslatorString 调用方法: TranslatorString  输入中文,翻译成 拼音.英文. 参数:wordKey(中文) 现在要做,翻译词:[随便],代码如

Axis2发布webservice(4)&mdash;WebService的session管理

一.WebService中添加session管理代码,用到了MessageContext类和ServiceContext类.代码如下: package com.hoo.service; import org.apache.axis2.context.MessageContext; import org.apache.axis2.context.ServiceContext; public class LoginService { //登陆方法 public boolean login(Strin