Java在编码完成webService服务端后,可以通过运行一个main方法来发布webService服务,但是实际将服务部署到服务器上后,肯定不能还运行main方法,所以我们需要在启动服务器的时候就发布服务。并且在服务器的生命周期内一直运行。
main方法发布服务(可用于测试类)
public static void main(String[] args) { Endpoint.publish("http://172.18.100.52:9090/medical", new MedicalServiceController()); System.out.println("****[ Server ready...WebService发布成功。]"); }
部署到服务器我们一般采用在一个servlet中初始化的时候就发布服务:
package cn.sccl.mms.web; import java.io.IOException; import javax.servlet.GenericServlet; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.xml.ws.Endpoint; /** * 仅仅用于发布提供给114的webService接口服务发布 Spring容器初始化的时候就启动服务 * * @author lijianbo * */ public class MedicalServlet implements Servlet { @Override public void destroy() { // TODO Auto-generated method stub } @Override public ServletConfig getServletConfig() { // TODO Auto-generated method stub return null; } @Override public String getServletInfo() { // TODO Auto-generated method stub return null; } /** * 发布114webService服务 * ("此Servlet不处理任何业务逻辑,仅仅用来发布一个Web服务"); */ @Override public void init(ServletConfig arg0) throws ServletException { Endpoint.publish("http://172.18.100.52:9090/medical", new MedicalServiceController()); System.out.println("****[ Server ready...WebService发布成功。]"); } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { System.out.println("此Servlet不处理任何业务逻辑,仅仅用来发布一个Web服务"); } }
在web.xml 中还需要配置:
<!-- Endpoint.publish 114webService --> <servlet> <servlet-name>MedicalServlet</servlet-name> <servlet-class>cn.sccl.mms.web.MedicalServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MedicalServlet</servlet-name> <url-pattern>/servlet/medicalServlet</url-pattern> </servlet-mapping>
注意:①要将加载的等级设为1 ,这样就能保证在启动服务的时候初始化servlet。
<load-on-startup>1</load-on-startup>
这样我们在启动服务器的时候就机会发布webService的服务了。
时间: 2024-12-23 12:15:44