เราก็ต้อง create project เป็น web อยู่แล้ว ในที่นี้ก็คงต้องเดินไปหา
project/WebContent/WEB-INF/web.xml แล้วก็ละเลงตามนี้
Auth Manager contextConfigLocation classpath:com/company/auth/service/cxf.xml org.springframework.web.context.ContextLoaderListener CXFServlet org.apache.cxf.transport.servlet.CXFServlet CXFServlet /services/*
ต่อไป model ตัวที่จะลาก parameter ต่าง ๆ ไป ๆ มาก ๆ
project/src/com/company/auth/bean/Employee.java
package com.company.auth.bean;
import java.io.Serializable;
import java.util.Set;
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
private String gid;
private String lastName;
private String firstName;
private Set privileges;
public Employee() {}
public String getGid() {
return gid;
}
public void setGid(String gid) {
this.gid = gid;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public Set getPrivileges() {
return privileges;
}
public void setPrivileges(Set privileges) {
this.privileges = privileges;
}
public boolean isUserInRole(String role) {
if(privileges == null) { return false; }
else { return privileges.contains(role); }
}
}
เริ่มด้วยการประกาศ service บน xml
project/src/com/company/auth/service/cxf.xml
<import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <jaxws:endpoint id="auth" implementor="com.company.auth.service.AuthServiceImpl" address="/cxfAuth"/>
ต่อมาก็เริ่มในส่วน service ที่จะเป็นตัวถูกเรียกใช้ง่าน
project/src/com/company/auth/service/AuthService.java
package com.company.auth.service;
import javax.jws.WebParam;
import javax.jws.WebService;
import com.company.auth.bean.Employee;
@WebService
public interface AuthService {
Employee getEmployee(@WebParam(name="gid") String gid);
}
project/src/com/company/auth/service/AuthServiceImpl.java
package com.company.auth.service;
import javax.jws.WebService;
import com.company.auth.bean.Employee;
@WebService(endpointInterface = "com.company.auth.service.AuthService", serviceName = "corporateAuthService")
public class AuthServiceImpl implements AuthService{
@Override
public Employee getEmployee(String gid) {
System.out.print("test log for apache cxf web-service... input gid : " + gid);
return new Employee();
}
}
หลังจากที่ทำการเขียน service ขึ้นมาเสร็จเรียบร้อยแล้วก็สั่ง run server รอไว้เลย
แล้วเราก็มาเขียน client แบบง่าย ๆ เพื่อลองเรียกใช้กัน(จริง ๆ แล้วเขียนไว้ที่ใหนก็ได้
แต่ต้องนำ model กับ interface มาด้วย แต่ในที่นี้เอาง่าย ๆ ไว้ก่อน)
project/src/com/company/auth/client/Client.java
package com.company.auth.client;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.company.auth.bean.Employee;
import com.company.auth.service.AuthService;
public class Client {
private Client() {
}
public static void main(String args[]) throws Exception {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.getInInterceptors().add(new LoggingInInterceptor());
factory.getOutInterceptors().add(new LoggingOutInterceptor());
factory.setServiceClass(AuthService.class);
factory.setAddress("http://localhost:8080/Test1/services/cxfAuth");
AuthService client = (AuthService) factory.create();
Employee employee = client.getEmployee("0223938");
System.out.println("Server said: " + employee.getLastName() + ", " + employee.getFirstName());
System.exit(0);
}
}
ในส่วน ของ wsdl จะเข้าไปที่
http://localhost:8080/project/services/cxfAuth?wsdl
กรณีที่เราต้องการเขียนเฉพาะ client ให้เราไปมอง server ที่ตัว file wsdl แล้วใช้
wsdl2java โดยเมื่อ download cxf มา จะได้ file apache-cxf-2.2.7.zip คำสั่งจะอยู่ที่
apache-cxf-2.2.7\bin\wsdl2java.bat
ก็ให้เราใช้คำสั่ง ตามหลังด้วย url ของ wsdl ได้เลย (java file และ folder ก็จะ
ออกมายัง part ที่เราใช้คำสั่ง ก็ย้ายไปไว้ที่อื่นเอาเอง)
wsdl2java http://localhost:8080/project/services/cxfAuth?wsdl
ในที่นี้ได้เป็น part : com\company\auth\service\
AuthService.java
CorporateAuthService.java
Employee.java
GetEmployee.java
GetEmployeeResponse.java
ObjectFactory.java
package-info.java
ไม่มีความคิดเห็น:
แสดงความคิดเห็น