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,正在學習,等成功了在更新。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM