myeclipse上spring+mybatis+axis2發佈webservice介面的問題及個人實現的方式

来源:http://www.cnblogs.com/guilongliang/archive/2017/06/22/7066385.html
-Advertisement-
Play Games

前提: 這個月的突然一天,有個項目對接需要使用axis2發佈的介面,這下難倒我了,畢竟之前我是連webservice介面都不知怎麼發佈的。後來從HelloWorld開始發佈了第一個介面--sayHi();到這一步的時候都是很順利的,唯獨和axis2整合的時候,出現問題了,spring的dao層在ax ...


前提:

       這個月的突然一天,有個項目對接需要使用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

下班了  。。。下次接著寫

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Kotlin做為一門編程語言,已經出現好幾年了,但此前在國內並不聞名。自從5月份谷歌宣佈它成為Android的官方開發語言之後,Kotlin猛然竄紅了,雖說短期內Kotlin無法取代Java,但對於一門新技術,我們還是有必要好好學習。 谷歌號稱從Android Studio 3.0開始完全支持Kot ...
  • 一,代碼: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSLog(@" 產生隨機字元串 %@",[self g ...
  • requests 模塊 模塊的由來: 瀏覽器可以瀏覽網站, 是由於瀏覽器發送了requests , 各種請求.打開一個網站可能有幾十到幾百個請求. 從而伺服器端會反饋各種因應不同請求生成的數據. 我們瀏覽器再decode這些數據來顯示在屏幕上. requests, 就是Python一種用來偽裝成模擬... ...
  • 前 言 mysql mysql語法--本篇學習都是通過使用Navicat Premium(資料庫管理工具),連接mysql數據. 本篇學習主要有兩個部分: 一、創建用戶,創建資料庫,給用戶分配許可權,刪除用戶許可權。 二、MYSQL中常見的數據類型 三、表-創建表、主鍵、外鍵 四、資料庫設計的三大範式 ...
  • Introduction to Schema Objects 資料庫 schema 是存儲數據結構的邏輯容器,被稱為 。例如,表和索引是 通過 SQL 來創建和操作 資料庫用戶具有口令並擁有各種資料庫的許可權,每個用戶擁有一個單獨的 ,schema 與用戶具有相同的名字 schema 包含相應用戶的全 ...
  • create table DEPT ( deptno NUMBER(2) not null, dname VARCHAR2(20), loc VARCHAR2(13) ); alter table DEPT add constraint PK_DEPT primary key (DEPTNO); c ...
  • 前言 - 簡單準備一下前戲 前面寫過幾篇mariadb 數據的隨筆, 多數偏C/C++層面. 這次分享一下平時開發中, 處理的一些數據層面的業務. 對於MariaDB, 不做過多介紹. 如果你有Ubuntu 系統, 可以通過下麵來個環境玩玩 這裡扯一下, 假如你複製mysql 腳本到 mariadb ...
  • 前言 最近一年由於工作需要大部分使用的都是NoSql資料庫,對關係型資料庫感覺越來越陌生,一個由 和`order by` 引發的血案由此而生。在此做個記錄,以備不時之需。 <! more 需求 首先,看一下整體的表結構。 現在查找每個 中最新的數據。 由於數據太多,不是很好看到效果。我們就拿一個 為 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...