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());
}
}