解决java web 项目发布webservice接口

   最近公司有一个需求,需要暴露当前web项目的接口给第三方系统调用,网上查到webservice是跨平台、跨语言的应用技术,所以作为首选。

查找了很多例子,都是很简单的加@WebService到类,加@WebMethod到暴露的方法上,然后EndPoint.publish即可,但我在web项目中使用,没有报错,但就是发布失败,在这里卡了很久,

以下是我的解决过程,做下记录备忘:

首先试着新建了一个普通java项目,同样的加接口、实现类、注解,结果发布成功。但是新建一个web项目同样的操作就是发布不成功,看了下项目结构,主要就是web项目默认加载tomcat的lib

所有JAR包,把这些包删除,重新发布,结果成功。这时我考虑到可能是我tomcat下的jar包冲突问题,于是进行排查,最后发现去掉  xfire-all-1.2.6.jar ,web项目就可以发布成功了,但是web项目

又必须有  xfire-all-1.2.6.jar,网上查了没有找到具体方法,但有提到xfire-core-1.2.6.jar,于是我把 xfire-all-1.2.6.jar 替代成 xfire-core-1.2.6.jar,web项目功能正常,webservice也可以发布成功。

因为我的项目是ssh框架,所以就创建一个filter类,配置到web.xml,启动项目的同时发布接口。

public class StartFilter implements Filter{

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.startWebservice();
        
    }
    
    public void startWebservice() {
        Endpoint.publish("http://localhost:8085/service/wstest",new WsInterfaceImpl());
        System.out.println("webservice发布成功");
    }

}
//web.xml添加配置
<filter> <filter-name>StartFilter </filter-name> <filter-class>com.cf.cfipms.interceptor.StartFilter</filter-class> </filter>

 

目前只是实现使用jdk自带的webservice进行发布,看到很多推荐CXF,正在学习,等成功了在更新。

上一篇:常用jQuery代码


下一篇:C# 动态调用WebService