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

如何在NetBeans 6中创建SOAP Web Services

阅读更多
该博客将向你展示,如何在NetBeans 6中轻松创建Web Services项目。在这个项目中将用到NetBeans 6.0及其附带的JAX-WS 2.1。

一、Web Services Description Language(WSDL:Web Services 描述语言)

有很多种方式来创建Web Services。其中一种方式是首先创建WSDL文件。首先,你必需明确你的Web Services将要实现一个什么样的功能,从而确定它的输入和输出参数分别是什么。在这个实例中,只实现了一个名为getcalculateValues的操作,它将简单的求出两个数的和。即以两个数字作为输入参数,它们的和为输出参数。

首先创建一下两个文件:

webservices.wsdl
=================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions xmlns:ns1="soapwebservices.jdevelop.eu" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://schemas.xmlsoap.org/soap/encoding/" name="SOAPWebServices" targetNamespace="soapwebservices.jdevelop.eu">
    <types>
        <xsd:schema>
            <xsd:import namespace="soapwebservices.jdevelop.eu" schemaLocation="webservices.xsd"/>
        </xsd:schema>
    </types>
    <message name="calculateValues">
        <part name="calculateValues" element="ns1:calculateValues"/>
    </message>
    <message name="calculateValuesResponse">
        <part name="calculateValuesResponse" element="ns1:calculateValuesResponse"/>
    </message>
    <portType name="SOAPWebServices">
        <operation name="getCalculateValues">
            <input message="ns1:calculateValues"/>
            <output message="ns1:calculateValuesResponse"/>
        </operation>
    </portType>
    <binding name="SOAPWebServicesPortBinding" type="ns1:SOAPWebServices">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="getCalculateValues">
            <soap:operation soapAction="urn:http://blog.jdevelop.eu/services/getCalculateValues"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
    </binding>
    <service name="SOAPService">
        <port name="WebServices" binding="ns1:SOAPWebServicesPortBinding">
            <soap:address location="http://blog.jdevelop.eu:80/services"/>
        </port>
    </service>
</definitions>

webservices.xsd
=================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:ns1="http://blog.jdevelop.eu/soapwebservices.xsd" xmlns:tns="soapwebservices.jdevelop.eu" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="soapwebservices.jdevelop.eu" version="1.0">
   <xs:element name="calculateValues">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="value1" type="xs:decimal"/>
                <xs:element name="value2" type="xs:decimal"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="calculateValuesResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="result" type="xs:decimal"/>
                <xs:element name="errormessage" type="xs:string" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>


二、创建NetBeans工程

打开NetBeans,新建一个Web Application工程,并命名为SOAPWebServices。将上下文路径文本框清空,点击完成按钮。

【个人注解】在这里创建工程时,请选择Tomcat 6作为服务器,否则后面的步骤可能会有所不同。

依次进入菜单File->New File->Web Services,选择Web Service from WSDL。如果您找不到此菜单,那么需要先安装插件“Web Service Plugin”(Tools->Plugins->Available Plugins)。


输入Web Services的名字ServiceImpl,包名为eu.jdevelop.soapwebservices.service,然后将WSDL文件输入框指向你先前创建的wsdl定义文件。


点击完成按钮。
下面是为你的Web Services定义正确的URL。打开sun-jaxws.xml,将其中的url-pattern属性设置为“/soapwebservices”。


同样修改web.xml文件中相应位置。

编辑index.jsp,将一下代码插入到<body></body>标签中:
<jsp:forward page="soapwebservices"></jsp:forward>

到这一步,就可以测试你的Web Services了。右击项目,选择清空并生成。然后运行项目。

在浏览器中输入http://localhost:8080/,回车后可以看到测试效果。点击其中的 Information->WSDL链接,可以查看其WSDL和XML-Schema。
下面就可以实现对应的业务逻辑了。
ServiceImpl.java
=================
package eu.jdevelop.soapwebservices.service;

import eu.jdevelop.soapwebservices.CalculateValues;
import eu.jdevelop.soapwebservices.CalculateValuesResponse;
import eu.jdevelop.soapwebservices.SOAPWebServices;
import eu.jdevelop.soapwebservices.wrapper.impl.CalculateValuesWrapper;
import javax.jws.WebService;

/**
* This is the Service-Implementation of the Web Service. Here are the
* operations which can be called from web clients.
*
* @author Siegfried Bolz
*/
@WebService(serviceName = "SOAPService", portName = "WebServices", endpointInterface = "eu.jdevelop.soapwebservices.SOAPWebServices", targetNamespace = "soapwebservices.jdevelop.eu", wsdlLocation = "WEB-INF/wsdl/ServiceImpl/webservices.wsdl")
public class ServiceImpl implements SOAPWebServices {

    public CalculateValuesResponse getCalculateValues(CalculateValues calculateValues) {

        try {
            CalculateValuesWrapper wrapper = new CalculateValuesWrapper();
            return wrapper.getResult(calculateValues);

        } catch (Exception x) {
            throw new IllegalStateException(x);
        }
    }

} // .EOF


ILogic.java
=================
package eu.jdevelop.soapwebservices.logic;

/**
* Use this interface to create logic-implementations for
* each web service operation.
*
* @author Siegfried Bolz
*/
public interface ILogic<T, V> {

    public T doAction(V var)
            throws Exception;
} // .EOF


CalculateValuesLogic.java
=================
package eu.jdevelop.soapwebservices.logic.impl;

import eu.jdevelop.soapwebservices.CalculateValues;
import eu.jdevelop.soapwebservices.CalculateValuesResponse;
import eu.jdevelop.soapwebservices.logic.ILogic;
import java.math.BigDecimal;

/**
* This implementation is normaly used for executing operations.
* Here we calculate some values.
*
* @author Siegfried Bolz
*/
public class CalculateValuesLogic implements ILogic<CalculateValuesResponse, CalculateValues>{

    public CalculateValuesResponse doAction(CalculateValues var) throws Exception {

        CalculateValuesResponse response = new CalculateValuesResponse();

        try {
            /**
             * Simple addition of two values
             */
            BigDecimal value1 = var.getValue1();
            BigDecimal value2 = var.getValue2();

            double sum = value1.doubleValue() + value2.doubleValue();

            response.setResult(BigDecimal.valueOf(sum));

        } catch (Exception x) {
            /**
             * On errors, return a valid bean with values. Do not send null!
             */
            CalculateValuesResponse errorResponse = new CalculateValuesResponse();
            errorResponse.setResult(BigDecimal.valueOf(0.0));
            errorResponse.setErrormessage("An error has occurred!");
            return errorResponse;
        }

        return response;
    }

} // .EOF


IWrapper.java
=================
package eu.jdevelop.soapwebservices.wrapper;

/**
* Use this interface to create wrapper-implementations for
* each web service operation.
*
* @author Siegfried Bolz
*/
public interface IWrapper<T, V> {

    public T getResult(V var)
            throws Exception;
} // .EOF


CalculateValuesWrapper.java
=================
package eu.jdevelop.soapwebservices.wrapper.impl;

import eu.jdevelop.soapwebservices.CalculateValues;
import eu.jdevelop.soapwebservices.CalculateValuesResponse;
import eu.jdevelop.soapwebservices.logic.impl.CalculateValuesLogic;
import eu.jdevelop.soapwebservices.wrapper.IWrapper;

/**
* The wrapper calls the logic-implementation. Exchange or modify
* the wrapper if you want to use other logic-implementations.
*
* @author Siegfried Bolz
*/
public class CalculateValuesWrapper implements IWrapper<CalculateValuesResponse, CalculateValues>{

    public CalculateValuesResponse getResult(CalculateValues var) throws Exception {
        CalculateValuesLogic logic = new CalculateValuesLogic();
        return logic.doAction(var);
    }

} // .EOF
分享到:
评论

相关推荐

    NetBeans6.0中使用WebServices

    通过以上步骤,我们完成了在NetBeans 6.0中从创建到消费Web服务的全过程。值得注意的是,处理JAR文件问题可能是整个过程中遇到的主要挑战。如果在实践中遇到问题,可以通过电子邮件xiaoxiaolang529@163.com或相同...

    使用NetBeansIDE5.0开发Web服务的快速入门指南

    在NetBeans 5.0中,你可以创建基于WSDL(Web服务描述语言)的SOAP服务,或者利用JAX-RS(Java API for RESTful Web Services)来构建RESTful服务。 2. **NetBeans IDE 5.0界面**: NetBeans IDE 5.0提供了一个直观...

    netbeans 开发 web service

    - 在NetBeans中选择“文件”&gt;“新建项目”,选择“Web”&gt;“Web应用程序”,并为项目命名,例如“wsone”。 - 在“源代码级别”设置中选择与J2SE版本相匹配的选项。 2. **创建Web Service**: - 在项目上右键选择...

    Accessing Web Services from a Visual Web Application

    总结来说,"Accessing Web Services from a Visual Web Application"涵盖了在NetBeans中创建Visual Web应用并与Web服务交互的各个方面。通过理解和掌握这些知识点,开发者能够高效地构建具有集成Web服务功能的Web...

    Java Web Services Tutorial

    在2006年发布的Java Web Services Developer’s Pack v2.0中,Sun Microsystems(现已被Oracle收购)提供了全面的教程和技术文档,以帮助开发者更好地理解和使用Java Web Services技术。 #### 三、Java Web ...

    NetBeans6.0中使用WebService

    提供的“NetBeans6.0中使用WebServices.doc”文件可能包含详细的步骤指南和示例,对于初学者来说是很好的参考资料。 总之,NetBeans 6.0为Web服务的开发提供了一个直观和高效的工作环境,无论你是创建新的Web服务...

    NetBeans IDE and GlassFish developing demo

    在"hello-simple-glassfish"这个压缩包中,可能包含了一个简单的示例项目,用于演示如何在NetBeans IDE中创建并部署一个基于GlassFish的Web服务。通过分析这个项目,开发者可以学习到具体的代码实现、配置文件设置...

    如何在NetBeans IDE 5.5.1上安装WSIT 插件

    在NetBeans IDE 5.5.1中安装WSIT插件是提升开发能力的关键步骤,尤其对于那些需要构建和调试跨平台Web服务的开发者来说。以下是如何进行安装的详细步骤: 1. **启动NetBeans IDE**:首先,确保你已经安装并运行了...

    J2EE.Web.Services.2003

    这本书详细介绍了如何在J2EE(Java 2 Platform, Enterprise Edition)环境中开发、部署和使用Web服务。 Web服务是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的软件系统,能够通过网络进行互操作。在J2EE平台上,...

    web service事例代码

    在本案例中,我们将深入探讨如何在NetBeans IDE中创建和使用Web服务,以及可能遇到的成功与失败的情况。 首先,让我们从创建Web服务开始。NetBeans提供了一个直观的环境来开发Java Web服务。在NetBeans中,你可以...

    Java.EE.7.Development.with.NetBeans.8

    Title: Java EE 7 Development with NetBeans 8 Author: David R. Heffelfinger Length: 362 pages Edition: 1 Language: English Publisher: Packt Publishing ...Chapter 11: SOAP Web Services with JAX-WS

    Prentice+-+SOA+Using+Java+Web+Services.pdf

    - **案例分析**:通过具体的案例研究来展示如何在实际项目中应用SOA和Java Web Services技术。 ### 4. 实战演练与最佳实践 - **开发环境搭建**:介绍搭建Java Web Services开发环境所需的工具和软件,如Eclipse、...

    2012 - Java 7 JAX-WS Web Services - Packtpub

    它继承自JAX-RPC,并在Java SE 6中作为标准组件被引入。 - **关键特性**:JAX-WS提供了高级抽象层,简化了Web服务的实现。它支持SOAP消息交换模式,并且可以轻松集成其他安全性和事务管理功能。 **2. 开发环境...

    Java EE 6 Development with NetBeans 7(书和代码)

    JAX-WS用于构建基于SOAP协议的Web服务,而JAX-RS则让开发者能够轻松创建RESTful风格的服务,后者在当今互联网环境中尤为流行。 此外,本书的示例代码是学习的重要辅助资源。通过实际操作这些代码,读者可以更好地...

    基于J2ME和WebServices的移动学习系统设计与实现

    ### 基于J2ME和WebServices的移动学习系统设计与实现 #### 一、引言 近年来,随着移动通信技术的飞速发展及移动通信设备的普及,移动学习作为一种全新的远程学习形式逐渐兴起。它结合了移动通信技术、计算机网络与...

    java6创建webservice,原来这么简单啊

    在Java 6中创建Web服务(WebService)是一个相对简单的过程,尤其对于那些熟悉JAX-WS(Java API for XML Web Services)的开发者来说。本文将详细介绍如何利用Java 6的API来构建一个基本的SOAP(Simple Object ...

    JAX-WS Web service

    **JAX-WS Web服务开发...通过以上步骤,开发者可以快速地创建、部署和测试JAX-WS Web服务,并在多种类型的客户端应用程序中使用。这个过程强调了JAX-WS如何通过简化开发流程和增强可移植性来提升Web服务开发的效率。

    NC中开发webservice所需工具包(高版本使用)

    标题中的“NC中开发webservice所需工具包(高版本使用)”指的是在NetBeans (NC) 高版本中开发Web服务(Web Service)所必需的工具包。NetBeans是一款开源的集成开发环境(IDE),广泛用于Java应用的开发,包括创建Web...

    Java6 WebService的发布

    在Java 6中,开发者可以使用Eclipse、NetBeans等IDE来辅助开发和部署Web服务,这些工具通常集成了对JAX-WS的支持,包括自动代码生成、调试和测试功能。 七、文件"java6wsdeploy"可能包含的内容 这个文件名可能是Web...

Global site tag (gtag.js) - Google Analytics