[Java教程]Web环境使用相对路径发布Webservice
0 2015-12-03 20:00:27
常我们的Webservice服务的发布地址都将是一个相对路径,在与Spring一起使用时我们需要引入Cxf配置Webservice的schema,如jaxws,用以定义对应的Webservice。
"1.0" encoding="UTF-8"?>
"http://www.w3.org/2001/
"http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
然后我们需要定义一个CXFServlet,用以接收对应的Webservice请求,如下所示。
"1.0" encoding="UTF-8"?>
version="3.0"
"http://java.sun.com/
"http://www.w3.org/2001/
xsi:schemaLocation="http://java.sun.com/>
contextConfigLocation
classpath:webservices.
org.springframework.web.context.ContextLoaderListener
CxfServlet
org.apache.cxf.transport.servlet.CXFServlet
CxfServlet
/sys/service/*
这样如果我们想访问HelloWorldService这个Webservice就可以通过相对于当前工程发布路径的/sys/service/helloWorld来访问了。
但是如果我们的工程没有使用Spring,但是我们也想把Webservice发布为工程的某一个路径的相对路径怎么办?Cxf也为我们提供了相应的支持,这比使用Spring时的CXFServlet要麻烦一点。Cxf为我们提供了一个CXFNonSpringServlet,这要求我们实现自己的继承自CXFNonSpringServlet的Servlet,然后重写其loadBus方法,最终需要达到的效果就是CXFNonSpringServlet使用的Bus与我们的发布Webservice时使用的Bus是同一个即可。这样当我们访问CXFNonSpringServlet请求某个Webservice时,CXFNonSpringServlet将自动根据请求的相对路径去寻找发布路径为其相对路径的Webservice。
下载地址java后台框架 springmvc mybaits 集代码生成器
publicclass WebserviceServlet extends CXFNonSpringServlet {
/**
*
*/
privatestaticfinallongserialVersionUID = 3919868434043901738L;
@Override
protectedvoid loadBus(ServletConfig sc) {
super.loadBus(sc);
//获取当前CXFNonSpringServlet使用的Bus,然后利用该Bus来发布服务
Bus bus = this.getBus();
JaxWsServerFactoryBean jsFactoryBean = new JaxWsServerFactoryBean();
jsFactoryBean.setBus(bus);
//该路径是相对于当前CXFNonSpringServlet匹配的路径的,也可以加斜杠
jsFactoryBean.setAddress("helloWorld");
jsFactoryBean.setServiceClass(HelloWorldService.class);
jsFactoryBean.setServiceBean(new HelloWorldServiceImpl());
jsFactoryBean.create();
}
}
这时我们的web.
"1.0" encoding="UTF-8"?>
version="3.0"
"http://java.sun.com/
"http://www.w3.org/2001/
xsi:schemaLocation="http://java.sun.com/>
CxfServlet
com.elim.test.cxf.servlet.WebserviceServlet
1
CxfServlet
/sys/service/*
本文网址:http://www.shaoqun.com/a/164028.html
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。
web
0