`
lovetocool
  • 浏览: 20000 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java6 WebService的发布

阅读更多
WebService服务发布往往比较混乱,Axis2的发布形式与XFire发布方式差别很大,而Java6 Web服务的发布与Axis2、XFire的Web服务的发布方式也有着天壤之别,它们之间没有经验可以借鉴。
 
因此,很有必要钻研下Java6的Web服务的发布方式。
 
从前面两篇文章可以看出Java6对WebService的发布提供了API级别的直接支持,发布只需要一行代码就搞定了。但是作为一个服务,就需要启动,总不能每次启动都去运行一个Main方法来启动吧。
 
实际中Web服务的发布常常伴随着Web容器的启动而发布,而在Java6中,我们没法直接像Axis2和XFire那样直接去发布,但是可以通过变通的方法,通过Servlet来和容器绑定起来,在容器启动的时候发布服务。
 
下面以Tomcat为例,来实现Java6 Web服务的发布。
 
1、开发WebService服务
 
package lavasoft.server;

import javax.jws.WebService;

/**
* Java6开发的WebService服务端
*
* @author leizhimin 2009-11-16 10:24:13
*/

@WebService
public class Java6WS {

        /**
         * Web服务中的业务方法
         *
         * @return 一个字符串
         */

        public String doSomething(String username) {
                return username + " is doing something!";
        }
}
 
2、开发发布服务的Servlet,为了通用性,最好选择GenericServlet来继承
 
package lavasoft.servlet;

import lavasoft.server.Java6WS;

import javax.servlet.*;
import javax.xml.ws.Endpoint;
import java.io.IOException;

/**
* 发布Java6 WebService的Servlet,
*
* @author leizhimin 2009-11-16 13:52:49
*/

public class WSServlet extends GenericServlet {
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
                super.init(servletConfig);
                System.out.println("准备启动WebService服务:http://192.168.14.117:8888/java6ws/Java6WS");
                //发布一个WebService
                Endpoint.publish("http://192.168.14.117:8888/java6ws/Java6WS", new Java6WS());
                System.out.println("已成功启动WebService服务:http://192.168.14.117:8888/java6ws/Java6WS");

        }

        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
                System.out.println("此Servlet不处理任何业务逻辑,仅仅yonglai发布一个Web服务:http://192.168.14.117:8888/java6ws/Java6WS");
        }
}
 
这里将服务发布的代码写在了Servlet的init()方法中,当Servlet加载时候,会自动执行init()里面的方法。从而达到发布服务的目的,由于此Servlet不处理任何业务,因此,在Service里面仅仅写了一个提示性的语句。
 
3、配置web.xml
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
                 version="2.5">

        <welcome-file-list>
                <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>

        <servlet>
                <servlet-name>WSServlet</servlet-name>
                <servlet-class>lavasoft.servlet.WSServlet</servlet-class>
                <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
                <servlet-name>WSServlet</servlet-name>
                <url-pattern>/servlet/WSServlet</url-pattern>
        </servlet-mapping>
</web-app>
 
注意,上面的Servlet比一般Servlet配置多了一行:
<load-on-startup>1</load-on-startup>
,这样写的目的是Servlet能伴随容易的启动在第一时间加载。以便服务能尽可能早的发布,否则,只有在第一次请求该Servlet的时候,才会被加载到容器。
 
4、部署、启动并测试
 
启动Tocmat6,浏览器中输入:http://localhost:8080/java6ws/
 
点击超链接,可以获取到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。

本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/227988

<!--正文 end-->
<!-- <div class="reviews"><span class="fl" style="cursor:pointer;"><a onclick="openFavoulist();" id="favourer"></a> </span> <div id="favourdiv" class="support01">0人</div> <span class="fl">了这篇文章</span></div> -->
0人
了这篇文章

分享到:
评论

相关推荐

    java发布webservice接口

    java开发过程中,很多地方都会遇到数据传递,远程获取数据问题,我这个简单的webservice接口发布可以在java开发过程中,很多地方都会遇到数据传递,远程获取数据问题,我这个简单的webservice接口发布可以在

    java发布webService 步骤

    本篇文章将详细讲解如何使用Java来发布一个Web服务,并在Tomcat服务器上部署运行。 一、准备工作 1. **安装Java开发环境**:确保你已经安装了Java JDK,可以访问Java API并编译Java源代码。 2. **安装Tomcat服务器...

    Java开发WebService实例

    Apache Axis是一个开源的、功能强大的Web服务实现,支持SOAP协议,能够简化WebService的创建、发布和调用过程。 **安装配置Tomcat** 确保Tomcat服务器已正确安装。本文假设使用的是Tomcat 5.0版本,但也可适用于...

    java版WebService生成客户端和服务端的实例

    在Java世界中,WebService是一种基于XML的开放标准技术,它允许不同系统间的应用程序进行通信,跨越不同的操作系统和编程语言。本实例将详细讲解如何使用Apache Axis1.4工具来生成Java版的WebService服务端和客户端...

    java webservice的发布以及调用

    ### Java WebService 的发布与调用 #### 一、前言 随着互联网技术的发展,不同系统之间的通信变得越来越重要。WebService作为一种重要的分布式计算技术,在跨平台、跨语言的服务交互方面发挥着重要作用。本文将详细...

    java webService接口开发案例

    Java WebService接口开发是将Java应用程序暴露为网络服务的一种方式,允许不同系统间的数据交换和交互。本案例将深入探讨如何使用Java实现Web服务的创建、发布和调用。 一、理解WebService WebService是一种基于...

    Java发布和调用WebService

    【Java发布和调用WebService】知识点详解 Java WebService是一种基于标准的、平台无关的通信方式,用于不同系统之间的交互。在Java中,主要通过JAX-WS(Java API for XML Web Services)框架来实现WebService的发布...

    C#调用java发布的WebService终稿.pdf

    C# 调用 Java 发布的 WebService 终稿 C# 调用 Java 发布的 WebService 是一种常见的跨语言通信方式。在本文中,我们将介绍如何使用 C# 调用 Java 发布的 WebService。 标题解释 C# 调用 Java 发布的 WebService ...

    SAP&Java的Webservice实例

    最后,函数可以发布成 Webservice。 在 SOAMANAGER 中,可以找到 WSDL 的 URL,然后在浏览器中访问该 URL,以获取 Webservice 的 Endpoint 地址。 在 SICF 中,可以找到服务的 Endpoint 地址,然后在浏览器中访问...

    java 调用webservice的几种方法总结

    "Java 调用 Webservice 的几种方法总结" Java 调用 Webservice 的几种方法总结中,主要介绍了使用 JDK Web 服务 API、Axis 和 XFire 等方法来调用 Webservice。下面将对每种方法进行详细的介绍。 使用 JDK Web ...

    Java 6 开发 WebService

    【Java 6 开发 WebService】是关于使用Java 6版本进行Web服务开发的技术主题。Web服务是一种基于网络的应用程序接口,它允许不同系统之间的数据交换。在这个场景中,我们将探讨如何利用Java 6的新特性,通过注解轻松...

    java的webservice服务端程序

    Java WebService服务端程序是一种基于Java技术实现的网络通信服务,它允许不同系统间的应用程序通过互联网进行交互。在本文中,我们将深入探讨Java WebService的核心概念、开发过程以及相关技术。 1. **WebService...

    java调用webservice.pdf

    综上所述,本文档涵盖了JavaWebService开发的多个方面,包括接口定义、端点发布、客户端调用、工具使用以及部署容器整合等,这些都是在实际开发中不可或缺的关键知识点。通过深入理解和运用这些知识,可以帮助开发者...

    java开发webservice的简单例子

    使用Java的`Endpoint`类发布服务: ```java HelloWorldImpl serviceImpl = new HelloWorldImpl(); Endpoint.publish("http://localhost:8080/HelloWorld", serviceImpl); ``` 这将在指定的URL上发布服务。 4....

    基于java的webservice

    5.3 UDDI注册:Universal Description, Discovery, and Integration (UDDI) 是一种目录服务,用于发布和查找Web服务。通过UDDI,服务提供者可以注册他们的服务,而服务消费者则可以搜索和发现所需的服务。 5.4 ...

    Java-WebService应用实例

    6. **示例代码**: 在jsp-WebService子目录中,可能包含了创建和调用WebService的示例代码,包括Java源文件、配置文件以及相关的HTML页面(jsp)来展示如何通过Web浏览器调用这些服务。通过这些示例,你可以学习如何...

    在java中发布webservice服务

    在Java中发布Web服务主要涉及的是Java Web Service技术,它是一种基于XML的协议,用于不同系统之间的通信。这里我们将详细讲解如何使用Axis和Tomcat来创建并发布一个Web服务。 首先,我们需要理解Java中的Web服务...

    JAVA常用框架发布WebService

    6. Spring与WebService整合: Spring框架提供了对WebService的全面支持,可以通过Spring-WS或Spring-Integration模块方便地集成各种Web服务框架,如Axis2。Spring的依赖注入和AOP特性使得Web服务的开发更加灵活和...

    webservice发布与调用

    2. WebService发布: 发布WebService主要涉及以下步骤: - **创建服务接口**:定义服务的操作(方法)和输入/输出参数。在Java中,这通常通过JAX-WS(Java API for XML Web Services)实现,使用注解如@WebService...

Global site tag (gtag.js) - Google Analytics