很有必要钻研下Java6的Web服务的发布方式。
从前面两篇文章可以看出Java6对WebService的发布提供了API级别的直接支持,发布只需要一行代码就搞定了。但是作为一个服务,就需要启动,总不能每次启动都去运行一个Main方法来启动吧。
实际中Web服务的发布常常伴随着Web容器的启动而发布,而在Java6中,我们没法直接像Axis2和XFire那样直接去发布,但是可以通过变通的方法,通过Servlet来和容器绑定起来,在容器启动的时候发布服务。
下面以Tomcat6下 来实现Java6 Web服务的发布。
文件目录:
1. 开发WebService服务
package com.soa.getUserSer.service; import javax.jws.WebService; @WebService public class GetUserSer { /** * 服务的方法:获取用户信息 * @param name * @return */ public String getUser(String name){ String users="当前用户是:"+name; return users; } }
2. 开发发布服务的Servlet,为了通用性,最好选择GenericServlet来继承
package com.servlet; import java.io.IOException; import javax.servlet.GenericServlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.xml.ws.Endpoint; import com.soa.getUserSer.service.GetUserSer; public class GetUserServlet extends GenericServlet { @Override public void init(ServletConfig servletConfig) throws ServletException { super.init(servletConfig); System.out.println("准备发布webService 服务:http://192.168.8.121:8092/soa/service.getUserSer"); //发布服务 Endpoint.publish("http://192.168.8.121:8092/soa/service.getUserSer", new GetUserSer()); System.out.println("服务发布成功:http://192.168.8.121:8092/soa/service.getUserSer"); } @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("此Servlet不处理任何业务逻辑,仅仅yonglai发布一个Web服务:http://192.168.8.121:8092/soa/service.getUserSer"); } }
这里将服务发布的代码写在了Servlet的init()方法中,当Servlet加载时候,会自动执行init()里面的方法。从而达到发布服务的目的,由于此Servlet不处理任何业务,因此,在Service里面仅仅写了一个提示性的语句。
3. 配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>GetUserServlet</servlet-name> <servlet-class>com.servlet.GetUserServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>GetUserServlet</servlet-name> <url-pattern>/servlet/GetUserServlet</url-pattern> </servlet-mapping> </web-app>
注意,上面的Servlet比一般Servlet配置多了一行:
<load-on-startup>1</load-on-startup>
,这样写的目的是Servlet能伴随容易的启动在第一时间加载。以便服务能尽可能早的发布,否则,只有在第一次请求该Servlet的时候,才会被加载到容器。
4、部署、启动并测试
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <head> <base href="<%=basePath%>"> <title>webservice获取用户地址</title> </head> <body> This is my JSP page. <br> <a href="http://192.168.8.121:8092/soa/service.getUserSer?wsdl">SOA获取用户信息WSDL地址<a> </body> </html>地址发布:
接口发布后的wsdl地址
可见,服务伴随着tomcat的启动发布成功。
5、总结
1)、Java6的服务发布的总体思想是通过Java6 API的调用达到发布的目的,截止目前,已经看到两种发布方式,一种是直接调用API:
Endpoint.publish("http://192.168.14.117:8888/java6ws/Java6WS", new Java6WS());
另一种是,本例中Servlet方式。
2)、Endpoint.publish是一个后台线程,一旦发布了就会一直等待处理Web服务的请求,只有当main方法退出,或者容器关闭的时候,才自动退出。
3)、其实除了这种方式,也可以整合Spring来实现服务的发布,这就和Spring的Ioc容器整合在一起了。不管什么,道理就一个,调用Endpoint.publish()方法来实现服务的发布。
4)、在发布服务的时候,应该避免使用Tomcat容器的端口,一面发生冲突,在本文中,Tomcat使用的端口是8080,而Web服务发布使用的端口是8888。
相关推荐
在Java领域,Web服务是一种允许不同应用程序之间交换数据的方式,它基于开放标准,如SOAP(简单对象访问协议)和WSDL(Web服务描述语言)。下面将详细解释JAX-WS以及如何使用MyEclipse进行配置。 **JAX-WS简介** ...
### Java开发WebService实例详解 在IT领域,尤其是企业级应用开发中,WebService作为一种标准化的、跨平台的服务交互方式,被广泛应用于系统间的数据交换与服务调用。本文将基于给定的“Java开发WebService实例”...
Java WebService应用实例是Java开发中的一个重要组成部分,它允许不同平台和语言的系统之间通过标准接口进行通信。在本实例中,我们主要关注如何在Java环境中实现和使用WebService,特别是结合Spring框架集成XFire...
【Java 6 开发 WebService】是关于使用Java 6版本进行Web服务开发的技术主题。Web服务是一种基于网络的应用程序接口,它允许不同系统之间的数据交换。在这个场景中,我们将探讨如何利用Java 6的新特性,通过注解轻松...
Java WebService接口开发是将Java应用程序暴露为网络服务的一种方式,允许不同系统间的数据交换和交互。本案例将深入探讨如何使用Java实现Web服务的创建、发布和调用。 一、理解WebService WebService是一种基于...
在Java 6中开发Web服务(WebService)是企业级应用中的常见任务,它允许不同的系统之间通过网络交换数据。本文将深入探讨Web服务的几个关键概念,帮助开发者更好地理解和使用这项技术。 首先,我们来理解什么是Web...
### JAVA的WebService支持-CXF #### 一、概述与背景 WebService作为一种标准的服务技术,它允许不同系统之间通过网络进行通信。...开发者可以根据实际项目需求选择适合的技术栈来构建高效稳定的WebService应用。
### Java6开发WebService入门 #### 一、背景与意义 在早期的Web服务开发中,开发者通常会使用CXF、Axis2、XFire等工具来构建基于Java的应用程序。这些工具之所以被广泛采用,主要是因为它们能够提供广泛的兼容性和...
Java开发Web服务(Web Service)是一种常见的技术,用于在不同应用程序之间实现互操作性。Web服务基于开放标准,如XML(可扩展标记语言)、WSDL(Web服务描述语言)和SOAP(简单对象访问协议),使得服务提供者可以...
这篇关于“Web服务应用-Axis2”的博客文章可能会详细讲解Axis2的各个方面,从基本概念、安装配置,到创建服务、源码分析和工具使用,最后可能还会介绍实际的应用案例和最佳实践,帮助读者全面掌握使用Axis2开发Web...
3. **自动代码生成**:AXIS可以从WSDL(Web服务描述语言)文件自动生成客户端和服务端的Java代码,大大简化了开发过程。 4. **丰富的支持库**:AXIS提供了对多种协议和标准的支持,如SOAP、HTTP、HTTPS、MTOM...
【Java与.NET开发WebService详解大全】 在IT领域,WebService是一种基于标准协议(如SOAP和WSDL)的跨平台、跨语言的通信机制,允许不同系统间的应用进行交互。本篇文章将详细探讨使用Java和.NET(VB.NET为例)开发...
在Java 6中开发Web服务(WebService)是企业级应用中...同时,通过提供的HTML文档(Java6上开发WebService.html)和相关资源(java6WS、Java6上开发WebService_files),可以更深入地学习和实践Java 6 Web服务开发。
标题“Java-tomcat-axis2开发webservice返回json数据”涉及的是使用Java、Tomcat服务器以及Axis2框架来创建Web服务,并返回JSON格式的数据。这是一个常见的技术组合,用于构建RESTful API或者提供服务化接口。下面...
在Java世界中,WebService是一种基于标准的、平台无关的通信机制,它允许不同的应用程序之间...了解和熟练掌握JAX-WS是Java开发人员必备的技能之一,尤其在企业级应用开发中,Web服务常常作为不同系统间通信的桥梁。
Java 6 WebService的发布是基于早期的Java平台标准版(Java SE 6)和Java Web服务开发包(Java API for XML Web Services, JAX-WS)进行的。JAX-WS是Java平台上用于创建和消费Web服务的主要API,它简化了SOAP...
在IT行业中,Java是一种广泛应用的编程语言,而Web服务(Web Service)则是一种基于标准的、平台无关的方式,使得不同的应用系统能够相互通信。在本主题中,我们将深入探讨如何利用Java通过Web服务来传输文件,特别...
### Java访问C#开发的Webservice详解 #### 一、引言 在现代软件开发过程中,尤其是对于大型项目而言,采用分布式系统架构已经成为一种常态。分布式应用能够将复杂的业务逻辑分解并部署到不同的服务器上,从而提高...
本篇将深入讲解如何基于JAX-WS开发一个WebService实例。 首先,让我们了解JAX-WS的基本概念。JAX-WS提供了一种简单的方式来创建SOAP(Simple Object Access Protocol)Web服务,它集成了Java SE和Java EE平台,使得...