`
schy_hqh
  • 浏览: 558515 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

JAX-WS(二)通过wsimport解析wsdl

 
阅读更多
1.使用wsimport命令将wsdl转换为本地的java接口
wsimport 是java提供的命令,专门用来对wsdl文件进行解析,并转换为本地的java文件
命令:
wsimport -d E:\technology-hqh\proj\webservice\JAX-WS\wsimport_01 -keep http://localhost:8888/numberService?wsdl
说明:
-d 指名生成文件的输出路径
-keep 生成的文件除了class文件,还包括java源文件
-verbose 生成的详细信息
2.访问webservice
本地创建一个新的项目,将wsimport生成的java文件拷贝到src中
由wsimport生成的文件中,会生成一个接口和一个实现类
实现类中提供了一个getXXXport(),用来返回具体的实现类
接口---实现类【多态】
IMyService接口

package com.hqh.service;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;


/**
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.1.6 in JDK 6
 * Generated source version: 2.1
 * 
 */
@WebService(name = "IMyService", targetNamespace = "http://service.hqh.com/")
@XmlSeeAlso({
    ObjectFactory.class
})
public interface IMyService {


    /**
     * 
     * @param arg1
     * @param arg0
     * @return
     *     returns int
     */
    @WebMethod
    @WebResult(targetNamespace = "")
    @RequestWrapper(localName = "plus", targetNamespace = "http://service.hqh.com/", className = "com.hqh.service.Plus")
    @ResponseWrapper(localName = "plusResponse", targetNamespace = "http://service.hqh.com/", className = "com.hqh.service.PlusResponse")
    public int plus(
        @WebParam(name = "arg0", targetNamespace = "")
        int arg0,
        @WebParam(name = "arg1", targetNamespace = "")
        int arg1);

    /**
     * 
     * @param arg1
     * @param arg0
     * @return
     *     returns int
     */
    @WebMethod
    @WebResult(targetNamespace = "")
    @RequestWrapper(localName = "minus", targetNamespace = "http://service.hqh.com/", className = "com.hqh.service.Minus")
    @ResponseWrapper(localName = "minusResponse", targetNamespace = "http://service.hqh.com/", className = "com.hqh.service.MinusResponse")
    public int minus(
        @WebParam(name = "arg0", targetNamespace = "")
        int arg0,
        @WebParam(name = "arg1", targetNamespace = "")
        int arg1);

}


MyServiceImplService实现类

package com.hqh.service;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Logger;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.WebEndpoint;
import javax.xml.ws.WebServiceClient;
import javax.xml.ws.WebServiceFeature;


/**
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.1.6 in JDK 6
 * Generated source version: 2.1
 * 
 */
@WebServiceClient(name = "MyServiceImplService", targetNamespace = "http://service.hqh.com/", wsdlLocation = "http://localhost:8888/numberService?wsdl")
public class MyServiceImplService
    extends Service
{

    private final static URL MYSERVICEIMPLSERVICE_WSDL_LOCATION;
    private final static Logger logger = Logger.getLogger(com.hqh.service.MyServiceImplService.class.getName());

    static {
        URL url = null;
        try {
            URL baseUrl;
            baseUrl = com.hqh.service.MyServiceImplService.class.getResource(".");
            url = new URL(baseUrl, "http://localhost:8888/numberService?wsdl");
        } catch (MalformedURLException e) {
            logger.warning("Failed to create URL for the wsdl Location: 'http://localhost:8888/numberService?wsdl', retrying as a local file");
            logger.warning(e.getMessage());
        }
        MYSERVICEIMPLSERVICE_WSDL_LOCATION = url;
    }

    public MyServiceImplService(URL wsdlLocation, QName serviceName) {
        super(wsdlLocation, serviceName);
    }

    public MyServiceImplService() {
        super(MYSERVICEIMPLSERVICE_WSDL_LOCATION, new QName("http://service.hqh.com/", "MyServiceImplService"));
    }

    /**
     * 这个方法就可以方便的返回一个实现类来让接口进行引用!!!
     * @return
     *     returns IMyService
     */
    @WebEndpoint(name = "MyServiceImplPort")
    public IMyService getMyServiceImplPort() {
        return super.getPort(new QName("http://service.hqh.com/", "MyServiceImplPort"), IMyService.class);
    }

    /**
     * 
     * @param features
     *     A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy.  Supported features not in the <code>features</code> parameter will have their default values.
     * @return
     *     returns IMyService
     */
    @WebEndpoint(name = "MyServiceImplPort")
    public IMyService getMyServiceImplPort(WebServiceFeature... features) {
        return super.getPort(new QName("http://service.hqh.com/", "MyServiceImplPort"), IMyService.class, features);
    }

}



访问外部服务
package com.hqh.service.test;

import com.hqh.service.IMyService;
import com.hqh.service.MyServiceImplService;

public class VisitRemotServer {
	public static void main(String[] args) {
		//wsimport生成的实现类
		MyServiceImplService myServiceImpl = new MyServiceImplService();
		
		//通过实现类中的getXXXPort()返回一个实现给接口
		IMyService iService = myServiceImpl.getMyServiceImplPort();
		
		//接口调用方法(服务提供者中的方法将被调用执行并返回结果)
		int retPlus = iService.plus(1, 2);
		System.out.println(retPlus);
	}
}

分享到:
评论

相关推荐

    jax-rs jax-ws所需包,亲测可用

    **标题与描述解析:** 标题"jax-rs jax-ws所需包,亲测可用"表明这个压缩包包含了用于开发...通过以上步骤,开发者可以快速搭建一个能正确处理JAX-RS和JAX-WS服务的环境,无需手动解决依赖问题,大大提高了开发效率。

    JAX-WS所需Jar包

    4. **jaxws-tools.jar**: 包含了JAX-WS相关的工具,如wsimport和wsgen,它们分别用于从WSDL生成Java源代码和服务端点,以及从Java源代码生成WSDL。 5. **sjsxp.jar**: 这是Java Simple XML Parser (JSXP)的实现,是...

    JAX-WS2.0 API

    JAX-WS 2.0是JAX-WS的第二个主要版本,它在JAX-RPC(Java API for XML-based RPC)的基础上进行了改进,引入了许多新特性以提升开发者的体验和效率。 **JAX-WS 2.0 的核心概念:** 1. **服务端点接口(SEI, ...

    jax-ws 2.0文档说明以及源码

    本篇文章将深入探讨JAX-WS 2.0的核心概念、功能及其与相关技术如JAXB(Java Architecture for XML Binding)、SAAJ(SOAP with Attachments API for Java)和WSDL(Web Services Description Language)的交互。...

    java实验_JAX-Ws

    这通常是通过解析WSDL并使用`wsimport`工具生成客户端 stub完成的。 6. **测试服务**:编写客户端代码来调用服务,并验证服务是否按预期工作。这可能涉及到创建一个简单的Java应用程序或者使用像cURL这样的工具发送...

    JAX-WS Webservice

    `jaxws-ri`是JAX-WS参考实现的源代码包,包含JAX-WS API的实现以及相关的工具,如`wsimport`,用于从WSDL生成客户端代码。开发者可以使用这个库来快速开发和测试JAX-WS Web服务。 **7. JAX-WS与JAX-RS比较** JAX-...

    JAX-WS在Tomcat中发布服务

    1. **生成WSDL(Web Service Description Language)文件**:JAX-WS工具如`wsimport`可以自动从服务接口生成WSDL文件,描述服务的接口和消息格式。 2. **创建部署描述符(web.xml)**:在`WEB-INF`目录下创建或更新`...

    JAX-WS 实现WebService发布

    客户端可以通过解析WSDL来与服务进行交互。 **5. 客户端调用Web服务** JAX-WS还提供了工具,如wsimport,可以从WSDL生成Java客户端存根类,使得调用Web服务就像调用本地方法一样简单。例如: ```bash wsimport -...

    JAX-WS使用教程

    JAX-WS使用Java Architecture for XML Binding(JAXB)进行数据绑定,以及使用Streaming API for XML(StAX)进行XML解析。JAX-WS还支持WS-Addressing和MTOM(消息传输优化机制)。 在创建Web服务的过程中,JAX-WS...

    将铲子朝向JAX-WS

    JAX-WS允许通过Java类自动生成WSDL文件。 2. **SOAP**:一种用于交换结构化信息的协议,是Web服务的基础通信协议。JAX-WS处理SOAP消息的生成和解析。 3. **JAXB(Java Architecture for XML Binding)**:用于在...

    JAX-WS_Java API for XML Web Services

    JAX-WS支持多种工具,如`wsimport`,它可以从WSDL文件生成Java客户端和服务器端代码。此外,Eclipse、IntelliJ IDEA等IDE也提供了对JAX-WS的集成支持,简化了开发过程。 ### 6. 文件列表解析 在提供的压缩包`...

    JAX-WS(java api xml webservice)

    JAX-WS通过将业务逻辑与服务接口分离,实现了松耦合的Web服务架构。 在Java世界里,JAX-WS是取代了早期的JAX-RPC(Java API for XML-based RPC)的规范,提供了更现代、更灵活的Web服务开发方式。JAX-WS的主要组件...

    JAX-WS开发部署WebService

    `wsimport`会解析WSDL文件并生成Java源代码,这些代码包括服务代理类和服务接口,允许客户端调用Web服务的方法。当看到“Parsing WSDL…”和“generating code…”的提示,表明命令执行成功。 生成的客户端代码包含...

    jax-ws所需相关jar包

    接着,使用JAX-WS工具(如wsimport)生成服务端和客户端的代码。服务端会部署在应用服务器上,而客户端可以通过生成的代理类调用Web服务。JAXB则在服务的输入输出中处理XML数据的转换。 6. **优势**:JAX-WS和JAXB...

    上传一个基于Jax-ws的WebService

    5. **客户端生成**:JAX-WS提供了`wsimport`工具,可以从WSDL文件自动生成客户端存根类,这些类提供了与服务交互的方法。 6. **JAXB(Java Architecture for XML Binding)**:JAXB是JAX-WS的一部分,用于在Java...

    JAVA6开发WebService (二)——JAX-WS例子

    与早期的JAX-RPC相比,JAX-WS更注重XML和Web服务标准的遵从性,如WSDL(Web Services Description Language)、SOAP和WS-I(Web Services Interoperability) profiles。 二、创建Web服务 1. 定义服务接口:首先,...

    jax-ws 搭建服务端所需jar包

    10. **resolver.jar**:此库可能包含XML解析器的依赖管理工具,用于解决XML资源的引用和解析问题,确保正确加载和解析WSDL文件或其他XML文档。 通过这些jar包,开发者可以构建一个完整的JAX-WS服务端环境,能够创建...

    webService部署tomcat需要的jax-ws jar包

    `SOAP` Web服务通常基于`WSDL`(Web服务描述语言)进行定义,而`JAX-WS`(Java API for XML Web Services)则是Java平台上的标准框架,用于处理`SOAP`消息并构建`SOAP` Web服务。本篇文章将详细介绍`JAX-WS`以及在...

    JAX-WS_开发_web_service

    JAX-WS支持消息导向以及RPC导向的Web服务,并且能够通过XML进行通信。JAX-WS允许客户端和服务端之间有良好的互操作性:即Java平台上的客户端可以与Java平台上的Web服务交互,反之亦然。此外,JAX-WS遵循World Wide ...

    JAX_WS的demo

    2. 生成WSDL:使用JAX-WS工具(如wsimport)根据SEI生成WSDL。 3. 实现SEI:创建实现SEI的类,实现业务逻辑。 4. 部署服务:将服务部署到应用服务器,如Tomcat、JBoss等。 ### 4. 消费Web服务 消费JAX-WS Web服务...

Global site tag (gtag.js) - Google Analytics