Spring 與CXF整合(spring3.2,cxf3.1.11)


1,jar包導入,從官網下載zip文件后里面會有很多jar包,哪些必須哪些不是必須,我能力有限,從其他人那參考了導入的一下jar包。

2、配置相關文件

web.xml中配置servlet

<servlet>
        <servlet-name>CXFService</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXFService</servlet-name>
        <url-pattern>/zxg/*</url-pattern>  //此處用於訪問時的路徑比如    項目名稱/zxg ,自己隨意改
    </servlet-mapping>

3、配置到spring中

我的是apllication-context.xml中

<jaxws:endpoint id="userService"        接口名稱
            implementor="com.webservice.spring.UserWSImpl"   接口的實現類
            address="/webservice">                                                 系統自動給zxg后面追加的地址,自己隨意改
       </jaxws:endpoint>

4、服務端其實就是將一個方法進行了發布,說直白就是一個特殊的方法,就是寫一個接口,再寫一個接口實現類,在實現類中做一些業務處理,再返回相應處理結果,把代碼貼一下,三個類

@WebService
public interface UserWS {
    public User1 getUserById(long id);
}

@WebService
public class UserWSImpl implements UserWS{

    @Override
    public User1 getUserById(long id) {
        User1 user = new User1();
        user.setAge(18);
        user.setName("張三");
        user.setId(1);
        return user;
    }

}

@SuppressWarnings("serial")  
public class User1 implements Serializable {  

    private int id;  
    private String name;  
    private int age;  
    private String description;  
      
    public User1() {  
        super();  
    }  

 
    public int getId() {
        return id;
    }


    public void setId(int 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 getDescription() {  
        return description;  
    }  

    public void setDescription(String description) {  
        this.description = description;  
    }  
      
      

5、啟動項目訪問wsdl看是否成功localhost:8080/myFirstBlood/zxg/webservice?wsdl

6、成功后,將cxf配置到系統變量中,通過dos命令生成客戶端代碼,這個網上教程比較多,而且沒有啥大難度,不寫了

7、客戶端做好后,一般調用時會報錯說類名重復一類的,需要做的就是將每一個get*這樣的類中的方法中@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "getUserById1", propOrder = {
    "arg0"
})中name的名稱改一下,比如這個加了一個1.接口中方法越多自動生成的get方法也多,需要每一個都改。這樣總體就沒啥錯誤了。

8、客戶端test

public class Test {
    public static void main(String[] args) {
        UserWSImplService ui = new UserWSImplService();
        UserWS uws = ui.getUserWSImplPort();
        User1 user = uws.getUserById(1);
        System.out.println(user.getName());
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM