java实现简单的webservice方式

Java实现简单的Web Service方式可以通过使用两种不同的编程方式来完成:JAX-WS和Apache CXF。下面我们分别介绍这两种方式。

JAX-WS方式实现Web Service

JAX-WS是Java API for XML Web Services的缩写,是Java SE 6及以上提供的一种WebService编程API。
下面是一个简单的JAX-WS Web Service的例子,该Web Service接收两个数字并返回它们的求和结果。

  1. 创建一个Java类来实现Web Service
package com.example;

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

@WebService
public class MyWebService {
    @WebMethod
    public int add(int a, int b) {
        return a + b;
    }
}
  1. 使用javac编译类文件
javac com/example/MyWebService.java
  1. 使用wsimport生成WSDL文件和客户端代码
wsimport -keep http://localhost:8080/MyWebService?wsdl
  1. 部署Web Service

可以使用Java Web容器如Apache Tomcat或Jetty部署该Web Service,或者使用以下命令启动内置Web服务器:

java javax.xml.ws.Endpoint  publish("http://localhost:8080/MyWebService", new MyWebService());

至此,我们的Web Service已经成功部署,并且可以通过访问http://localhost:8080/MyWebService?wsdl来获取WSDL文件,然后使用生成的客户端代码调用该Web Service的方法。

Apache CXF方式实现Web Service

Apache CXF是一个开源的WebService框架,可以使用其提供的工具轻松创建并发布Web Service。下面是一个简单的Apache CXF Web Service的例子,该Web Service接收一个字符串,并返回该字符串的大写形式。

  1. 创建一个Java类来实现Web Service
package com.example;

import javax.jws.WebService;

@WebService
public class MyWebService {
    public String toUpperCase(String s) {
        return s.toUpperCase();
    }
}
  1. 使用Apache CXF Maven插件来生成代码
mvn archetype:generate -DgroupId=com.example -DartifactId=my-webservice -DarchetypeArtifactId=maven-archetype-quickstart
cd my-webservice

然后在pom.xml中添加CXF的依赖,并配置插件。

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-bundle-jaxrs</artifactId>
    <version>3.3.1</version>
</dependency>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>3.3.1</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>${basedir}/src/wsdl/mywebservices.wsdl</wsdl>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  1. 编写WSDL文件
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://example.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="MyWebService" targetNamespace="http://example.com/">
    <wsdl:types>
        <xsd:schema targetNamespace="http://example.com/">
            <xsd:element name="toUpperCase" type="xsd:string"/>
            <xsd:element name="toUpperCaseResponse" type="xsd:string"/>
        </xsd:schema>
    </wsdl:types>
    <wsdl:message name="toUpperCaseRequest">
        <wsdl:part name="parameters" element="tns:toUpperCase" />
    </wsdl:message>
    <wsdl:message name="toUpperCaseResponse">
        <wsdl:part name="parameters" element="tns:toUpperCaseResponse" />
    </wsdl:message>
    <wsdl:portType name="MyWebServicePortType">
        <wsdl:operation name="toUpperCase">
            <wsdl:input message="tns:toUpperCaseRequest" />
            <wsdl:output message="tns:toUpperCaseResponse" />
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="MyWebServiceBinding" type="tns:MyWebServicePortType">
        <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"/>
        <wsdl:operation name="toUpperCase">
            <wsdlsoap:operation soapAction=""/>
            <wsdl:input><wsdlsoap:body use="literal"/></wsdl:input>
            <wsdl:output><wsdlsoap:body use="literal"/></wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="MyWebService">
        <wsdl:port binding="tns:MyWebServiceBinding" name="MyWebServicePort">
            <wsdlsoap:address location="http://localhost:8080/MyWebService"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>
  1. 生成Python客户端代码
java -cp target/classes/:$HOME/.m2/repository/org/apache/cxf/cxf-rt-bindings-soap/3.3.1/cxf-rt-bindings-soap-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-bundle-jaxrs/3.3.1/cxf-bundle-jaxrs-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-core/3.3.1/cxf-core-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-rt-bindings-xml/3.3.1/cxf-rt-bindings-xml-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-rt-frontend-jaxrs/3.3.1/cxf-rt-frontend-jaxrs-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-rt-frontend-simple/3.3.1/cxf-rt-frontend-simple-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-rt-transports-http/3.3.1/cxf-rt-transports-http-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-rt-wsdl/3.3.1/cxf-rt-wsdl-3.3.1.jar org.apache.cxf.tools.wsdlto.WSDLToJava -client -d target/src/main/java -p com.example http://localhost:8080/MyWebService?wsdl
  1. 部署Web Service

可以使用Java Web容器如Apache Tomcat或Jetty部署该Web Service,或者使用以下命令启动内置Web服务器:

java -cp target/classes/:$HOME/.m2/repository/org/apache/cxf/cxf-rt-bindings-soap/3.3.1/cxf-rt-bindings-soap-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-bundle-jaxrs/3.3.1/cxf-bundle-jaxrs-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-core/3.3.1/cxf-core-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-rt-bindings-xml/3.3.1/cxf-rt-bindings-xml-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-rt-frontend-jaxrs/3.3.1/cxf-rt-frontend-jaxrs-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-rt-frontend-simple/3.3.1/cxf-rt-frontend-simple-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-rt-transports-http/3.3.1/cxf-rt-transports-http-3.3.1.jar:$HOME/.m2/repository/org/apache/cxf/cxf-rt-wsdl/3.3.1/cxf-rt-wsdl-3.3.1.jar org.apache.cxf.endpoint.ServerImpl -serviceClass com.example.MyWebService -serviceName "{http://example.com/}MyWebService" -portName "{http://example.com/}MyWebServicePort" -address "/MyWebService"

至此,我们的Web Service已经成功部署,并且可以通过访问http://localhost:8080/MyWebService?wsdl来获取WSDL文件,然后使用生成的客户端代码调用该Web Service的方法。

以上就是使用JAX-WS和Apache CXF两种方式实现Java Web Service的完整攻略,希望对您有所帮助。

阅读剩余 68%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现简单的webservice方式 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 使用maven打包生成doc文档和打包源码

    使用maven打包生成doc文档和打包源码的完整攻略如下: 一、生成文档 添加maven插件:在pom.xml文件中,添加以下插件: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifact…

    Java 2023年5月19日
    00
  • Java实现JDBC连接数据库简单案例

    下面我将详细讲解Java实现JDBC连接数据库简单案例的完整攻略。 第一步:导入JDBC驱动 JDBC驱动包可以从官网下载,下载完成后需要将其导入到项目中。导入方式有两种,分别是将其放入CLASSPATH中或者将其直接加入项目中,本文采用第二种方式。 第二步:建立数据库连接 在Java中使用JDBC驱动连接数据库,需要调用驱动程序提供的DriverManag…

    Java 2023年5月19日
    00
  • Java Apache Commons报错“SQLException”的原因与解决方法

    “SQLException”是Java中处理数据库操作时常见的异常,通常由以下原因之一引起: 数据库连接错误:如果数据库连接失败,则可能会出现此错误。在这种情况下,需要检查数据库连接以解决此问题。 SQL语句错误:如果SQL语句错误,则可能会出现此错误。在这种情况下,需要检查SQL语句以解决此问题。 以下是两个实例: 例1 如果数据库连接失败,则可以尝试检查…

    Java 2023年5月5日
    00
  • Tomcat配置及如何在Eclipse中启动

    下面我将详细讲解Tomcat配置及如何在Eclipse中启动的完整攻略。 1. Tomcat配置 Tomcat是开源的Web应用程序服务器,它可以为使用Java Servlet和JSP的Web应用程序提供运行环境。在使用Tomcat之前,需要进行配置。 1.1 下载Tomcat 首先需要在Tomcat官网下载Tomcat安装包,下载地址为http://tom…

    Java 2023年5月19日
    00
  • JDBC数据库连接过程及驱动加载与设计模式详解

    下面是对于“JDBC数据库连接过程及驱动加载与设计模式详解”的完整攻略: JDBC数据库连接过程 JDBC是JavaEE标准中定义的用于操作各种关系型数据库的API。使用JDBC连接到数据库的过程如下: 加载数据库驱动:使用Class.forName(driver)加载对应数据库的驱动类,其中driver是JDBC提供的数据库驱动类名。例如,连接MySQL数…

    Java 2023年5月20日
    00
  • Javacsv实现Java读写csv文件

    以下是Javacsv实现Java读写csv文件的完整攻略: 1. 什么是Javacsv Javacsv 是一个Java编程语言的CSV(逗号分隔符)文件格式库,可以和 Java 一起使用来读取和写入以逗号为分隔符的文件。 Javacsv 旨在提供一个易于使用的、稳定的、高效的方式来处理大型、小型和复杂的 CSV 文件。 2. Javacsv的安装 Javac…

    Java 2023年5月20日
    00
  • Java实现图片验证码具体代码

    当网站需要进行用户登录、注册等操作时,为了防止机器人恶意攻击,通常会采用图片验证码的方式来验证用户是否为人类。下面介绍一种基于 Java 实现图片验证码的具体代码,包含验证码生成和校验流程。 生成验证码图片 验证码生成包含以下几个步骤: 生成随机字符串 /** * 生成指定长度的随机字符串 * @param length 随机字符串长度 * @return …

    Java 2023年6月15日
    00
  • 解决Intellij IDEA覆盖tomcat配置的问题

    解决Intellij IDEA覆盖tomcat配置的问题: 在使用Intellij IDEA开发Web项目时,有时会出现tomcat配置被覆盖的问题,导致项目无法启动。本攻略将提供两种解决方法,以便解决这个问题。 方法一:使用工程Default选项 在顶部工具栏找到“Run/Debug Configuration”下拉菜单,并点击左边的“Edit Confi…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部