1.首先在pom.xml配置文件中增加以下依赖
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.1.6</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>2.2.10-b140310.1920</version>
</dependency>
2.编写webservice服务类
@WebService
public interface ICommonService {
public String hellowWebservice(@WebParam(name = "param",targetNamespace="http://service.webservice.com/") String param,@WebParam(name = "key",targetNamespace="http://service.webservice.com/") String key) throws Exception;
}
targetNamespace:一般是包名按照顺序倒序编写
3.编写ICommonService对应的实现类
@WebService(targetNamespace="http://service.webservice.com/",endpointInterface = "com.webservice.service.ICommonService")
public class CommonServiceImpl implements ICommonService {
public String hellowWebservice(String baseOrXml,String key) throws Exception{
return "Hellow Webservice " ;
}
}
4.接下来就是发布webservice了
@Configuration
public class ServiceMain {
/*
此处极为重要,注册webservice的Servlet;如果只是单独的发布webservice将此处的注释去掉即可。如果要和项目一起发布,需要注释此处
然后接着第5步
@Bean
public ServletRegistrationBean dispatcherServlet(){
ServletRegistrationBean regisbean = new ServletRegistrationBean(new CXFServlet(), "/service/*");
regisbean.setOrder(1000);
return regisbean;
}*/
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus(){
return new SpringBus();
}
@Bean
public ICommonService userService() {
return new CommonServiceImpl();
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(),userService());
endpoint.publish("/commonService");
return endpoint;
}
}
5.新建一个Filter
@Configuration
@WebFilter(filterName="myFileter", urlPatterns="/*")
public class ServletFilter implements Filter {
private Map<String, ? extends ServletRegistration> listBean;
private ServletContext servletContext;
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
chain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
listBean = arg0.getServletContext().getServletRegistrations();
if(listBean.get("CXFServlet")==null){
servletContext = arg0.getServletContext();//
Dynamic dynamic = servletContext.addServlet("CXFServlet", new CXFServlet());//注意此处和第4步的代码是同样的功能
dynamic.addMapping("/service/*");
}
}
}
完成以上步骤后就可以启动服务啦,然后访问地址是:http://IP:port/项目地址/service?wsdl就可以了