Prämisse:
Plötzlich gab es eines Tages ein Projekt, das die von axis2 veröffentlichte Schnittstelle verwenden musste. Schließlich wusste ich nicht einmal, wie man die Webservice-Schnittstelle veröffentlicht vor. Später wurde die erste Schnittstelle - sayHi() - von HelloWorld veröffentlicht. Nur bei der Integration mit axis2 trat nach der Veröffentlichung von axis2 ein Problem auf null, es scheint, dass Spring während dieses Zeitraums nicht initialisiert wurde, um eine Anfrage gemäß dem normalen Prozess auszuführen. Nach der Integration mit axis2 funktionierte dies jedoch nicht schmerzhaft. Es ist sehr schmerzhaft. Ich habe alle erdenklichen Methoden nacheinander ausprobiert, einschließlich der erzwungenen Übernahme des Dao- und Singleton-Modus, aber nichts funktioniert. Also musste ich mich mit dem nächstbesten zufrieden geben: Zuerst mit spring+mybatis+cxf eine verwendbare Schnittstelle als Proxy veröffentlichen und dann mit der Achse2-Box eine separate Methode zum Aufrufen des Proxys veröffentlichen, um das Andocken des Projekts zu erreichen. Beginnen wir mit spring+mybatis+cxf:
1. Erstellen Sie das Projektverzeichnis:
Zuerst erstellen wir eine Entitätsklasse 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; } }
Dann schreiben wir zunächst PersonDao.java in Dao. Es handelt sich um eine Schnittstelle, die hauptsächlich einfache Hinzufügungen, Löschungen, Änderungen und Abfragen ausführt
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); }
Das Folgende ist die Implementierungsklasse der Dao-Schicht 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 }
, gefolgt von der Serviceschicht 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); }
Dann gibt es die Implementierungsklasse der Serviceschicht, 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); } }
Dann gibt es die Serviceschnittstelle, die wir veröffentlichen möchten, 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 }
Natürlich muss es seine Implementierungsklasse MyWebserviceImpl.java haben
Nach der Arbeit. . . Das nächste Mal schreibe ich
Das obige ist der detaillierte Inhalt vonProblem mit der Veröffentlichung der Webservice-Schnittstelle von spring+mybatis+axis2 auf myeclipse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!