主要类代码如下:
DemoAction.java:
package com.xy6;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class DemoAction extends Action{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
this.testWebservice1();
this.testWebservice2();
ActionForward forward = new ActionForward();
forward = mapping.findForward("success");
return forward;
}
/**
* 测试webservice接口,法一
*/
private void testWebservice1(){
JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
factoryBean.getInInterceptors().add(new LoggingInInterceptor());
factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());
factoryBean.setServiceClass(HelloWorldServiceInf.class);
factoryBean.setAddress("http://localhost:8080/webservice1");
HelloWorldServiceInf impl = (HelloWorldServiceInf) factoryBean.create();
System.out.println("*****************************" + impl.sayHi(new DemoForm()));
System.out.println("*****************************" + impl.sayHello("aaa"));
}
/**
* 测试webservice接口,法二
* 此方法,无需在工程中引入HelloWorldServiceInf类,但需处理异常
*/
private void testWebservice2(){
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
org.apache.cxf.endpoint.Client client = dcf.createClient("http://localhost:8080/webservice1?wsdl");
try{
Object[] objects = client.invoke("sayHello", "bbb");
System.out.println("*****************************" + objects[0].toString());
} catch(Exception ex){
ex.printStackTrace();
}
}
}
DemoForm.java:
package com.xy6;
public class DemoForm {
String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
HelloWorldServiceInf.java:
package com.xy6;
import javax.jws.WebService;
import javax.jws.WebParam;
@WebService
public interface HelloWorldServiceInf {
String sayHello(@WebParam(name="username") String username);
String sayHi(@WebParam(name="form") DemoForm form);
}
浏览器中访问http://localhost:9003/web/demo.do时,会执行DemoAction类,从而调用webservice接口测试方法。后台输出:
*****************************hello,form
*****************************hello,aaa
*****************************hello,bbb