前提:
今月のある日、突然、axis2 によって公開されたインターフェースを使用する必要があるプロジェクトのドッキングが発生しました。結局のところ、私はこれまで Web サービスのインターフェースを公開する方法さえ知りませんでした。その後、最初のインターフェイス - SayHi() が HelloWorld からリリースされました。このステップまではすべて順調に進みましたが、axis2 がリリースされた後、Spring の dao 層がインターフェイス内で常に問題が発生していました。 null、Spring が初期化されていないようです。この間、通常のプロセスに従ってリクエストを実行することをテストしましたが、このテストでは正常に動作しませんでした。とても辛いです。daoの強制取得やシングルトンモードなど、考えられるあらゆる方法を一つ一つ試しましたが、うまくいきません。そこで、次善の策として、最初に spring+mybatis+cxf を使用して使用可能なインターフェイスをプロキシとして公開し、次に axis2 ボックスを使用してプロキシを呼び出す別のメソッドを公開し、プロジェクトのドッキングを実現する必要がありました。 spring+mybatis+cxf から始めましょう:
1. プロジェクト ディレクトリを作成します:
まず、エンティティ クラス 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 を最初に書きましょう。これは、主に単純な追加、削除、変更、チェックを実行するためのインターフェースです
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 }
と、それに続くサービス層 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); }
次に、サービス層の実装クラス、 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); } }
次に、公開したいサービス インターフェイス、 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 公開 Web サービス インターフェイスに関する問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。