注:在WebService认识一的基础之上进行补充;
准备:添加geronimo-jaxws_2.2_spec-1.1.jar
操作:
1:建立一个Servlet:CXFInitServiceServlet.java
public class CXFInitServiceServlet extends CXFNonSpringServlet {
private static final long serialVersionUID = 1L;
@Override
protected void loadBus(ServletConfig sc) {//在init的时候调用
super.loadBus(sc);
Bus bus = this.getBus();
BusFactory.setDefaultBus(bus);
//当有多个webservice需要访问时,我们通过在web.xml中添加参数并读取的方式动态加载
@SuppressWarnings("unchecked")
Enumeration<String> enumeration = this.getInitParameterNames();
while (enumeration.hasMoreElements()) {
String elemName = enumeration.nextElement();
try {
Class<?> clazz = Class.forName(this.getInitParameter(elemName));
Endpoint.publish(elemName,clazz.newInstance());
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
为该Servlet在web.xml中进行配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>WebServiceExp</display-name>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.wjlmgqs.web.CXFInitServiceServlet</servlet-class>
<init-param>
<param-name>/user</param-name>
<param-value>org.wjlmgqs.service.imp.UserServiceImp</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/webservice/*</url-pattern>
</servlet-mapping>
</web-app>
注:我们通过在init-param中配置webservice接口实现类,然后再servlet中读取改配置并对外发布。此处可以配置多个。
3:修改客户端
public class UserWebServiceClient {
public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(UserService.class);
factory.setAddress("http://localhost:8080/WebServiceExp/webservice/user?wsdl");
UserService userService = (UserService) factory.create();
List<User> findUser = userService.findUser("wang");
for(User u : findUser){
System.out.println(u.toString());
}
}
}
结果同WebService认识一的结果
4:使用浏览器访问:http://localhost:8080/WebServiceExp/webservice/user?wsdl