有關編寫HTTP接口

開發一個能夠被調用的Http接口,有多種方法,目前都是使用JDK開發webService 1.1:開發WebService服務器 1.1.1:首先咱們要定義一個interface,使用@WebService註解標註接口,使用WebMethod註解標註接口定義的全部方法。java

package me.gacl.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;

/**
 * @author gacl
 * 定義SEI(WebService EndPoint Interface(終端))
 */
//使用@WebService註解標註WebServiceI接口
@WebService
public interface WebServiceI {

    //使用@WebMethod註解標註WebServiceI接口中的方法
    @WebMethod
    String sayHello(String name);
    
    @WebMethod
    String save(String name,String pwd);
}
1.1.2:編寫該interface的實現類
package me.gacl.ws;

import javax.jws.WebService;

/**
 * @author gacl
 * SEI的具體實現
 */
//使用@WebService註解標註WebServiceI接口的實現類WebServiceImpl
@WebService//這裏咱們依然用webService註解修飾
public class WebServiceImpl implements WebServiceI {

    @Override
    public String sayHello(String name) {
        //方法裏面的即爲能夠自主定義的業務邏輯
        System.out.println("WebService sayHello "+name);
        return "sayHello "+name;
    }

    @Override
    public String save(String name, String pwd) {
        System.out.println("WebService save "+name+", "+pwd);
        return "save Success";
    }
}

1.1.3:用終端發佈webService 咱們通常採用的方法是編寫一個WebServicePublish類來發布WebService,由於咱們通常都使用web項目,那麼咱們能夠使用監聽器或者servlet來發布webService, 1.1.3.1:監聽器,使用ServletContextListener監聽器發佈WebServiceweb

package me.gacl.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import javax.xml.ws.Endpoint;
import me.gacl.ws.WebServiceImpl;

/**
 * @author gacl
 * 用於發佈WebService的監聽器
 */
//使用Servlet3.0提供的@WebListener註解將實現了ServletContextListener接口的WebServicePublishListener類標註爲一個Listener
@WebListener
public class WebServicePublishListener implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
            
    }

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        //在容器實例化方法中將進行發佈
        //WebService的發佈地址
        String address = "http://192.168.1.100:8080/WS_Server/WebService";//部署須要咱們接口所在服務器的地址
        //發佈WebService,WebServiceImpl類是WebServie接口的具體實現類
        //Endpoint是java中的類,這裏能夠直接使用
        Endpoint.publish(address , new WebServiceImpl());
        System.out.println("使用WebServicePublishListener發佈webservice成功!");
    }
}

將web應用部署到服務器運行時,在吃實話web應用的上下文時,就能夠發佈微博Service了。也就是能夠使用發佈的URL地址訪問WebService。 1.1.3.2:也能夠使用servlet發佈webService服務器

package me.gacl.web.controller;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.xml.ws.Endpoint;
import me.gacl.ws.WebServiceImpl;

/**
 * @author gacl
 * 用於發佈WebService的Servlet
 */
//使用Servlet3.0提供的@WebServlet註解將繼承HttpServlet類的普通Java類標註爲一個Servlet
//將value屬性設置爲空字符串,這樣WebServicePublishServlet就不提供對外訪問的路徑
//loadOnStartup屬性設置WebServicePublishServlet的初始化時機
@WebServlet(value="",loadOnStartup=0)
public class WebServicePublishServlet extends HttpServlet {

    /* (non-Javadoc)
     * @see javax.servlet.GenericServlet#init()
     * 在WebServicePublishServlet初始化時發佈WebService
     */
    public void init() throws ServletException {
        //WebService的發佈地址
        String address = "http://192.168.1.100:8888/WebService";
        //發佈WebService,WebServiceImpl類是WebServie接口的具體實現類
        Endpoint.publish(address , new WebServiceImpl());
        System.out.println("使用WebServicePublishServlet發佈webservice成功!");
    }
}

將web應用部署到服務器運行時,在初始化WebServicePublishServlet 時,就會發布webService了。ide

總結:關於發佈webService主要就是經過javax.xml.ws.Endpoint類提供的靜態方法publish進行發佈,若是是普通的java項目,能夠專門寫一個類用於發佈webService,若是是web項目,那麼能夠使用ServletContextListener或者Servlet進行發佈。code

相關文章
相關標籤/搜索