• 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() {
         String ip ="xxx";//可以做一个系统配置,保存服务器IP Endpoint.publish(
    "http:/"+ip+":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,正在学习,等成功了在更新。

  • 相关阅读:
    为什么软件开发的速率比不上硬件的发展
    快速通读教材《现代软件工程——构建之法》
    个人学期总结
    201571030123/201571030126《小学四则运算练习软件软件需求说明》结对项目报告
    《小学四则运算练习软件》GUI
    java编写四则运算
    201571030126 初读《构建之法》
    201571030121《小学四则运算练习软件软件需求说明》结对项目报告
    201571030121 《小学生四则运算练习软件》结对项目
    201571030121 《四则运算》
  • 原文地址:https://www.cnblogs.com/Mrshuang11/p/14093120.html
Copyright © 2020-2023  润新知