前提:
这个月的突然一天,有个项目对接需要使用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
下班了 。。。下次接着写
以上就是myeclipse上spring+mybatis+axis2发布webservice接口的问题的详细内容。