1. 程式人生 > 實用技巧 >解決java web 專案釋出webservice介面

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