`

jax-ws创建和访问webservice

    博客分类:
  • xml
阅读更多
目前webservice在各个行业中的应用都十分的火。市面上目前流行的关于webservice的框架也有很多,今天我们不套用外部的框架,而是通过纯java来一步一步实现webservice的服务端的创建和客户端的访问。

一、创建webservice的服务器端

整体步骤如下:
1、创建服务的接口
2、创建服务的实现类
3、发布服务
4、验证服务是否发布成功

二、创建webservice的客户端

整体步骤如下:
1、通过java.net.URL定义连接webservice服务端的URL地址
2、通过javax.xml.namespace.QName设置命名空间和本地服务名称
3、通过javax.xml.ws.Service创建一个从客户端到服务器端的连接
4、通过javax.xml.ws.Service的getPort获取接口类
5、通过接口访问相应的方法


三、案例演示

(一)、创建webservice的服务器端

1、创建接口类

通过java的注解@WebService标明此接口是一个WebService接口

package com.sample.server;

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

import com.sample.bean.Student;

@WebService
public interface MyService {

	@WebMethod
	public String getStuName(String id);
	
	public Student getStuInfo(String id);
}








2、创建接口的实现类

这里需要注意,一定要设置endpointInterface。它的值为接口的全称,一定要带上包名。

package com.sample.server;

import java.util.Date;

import javax.jws.WebService;

import com.sample.bean.Student;
@WebService(endpointInterface="com.sample.server.MyService")
public class MyServiceImpl implements MyService {

	@Override
	public String getStuName(String id) {
		if("1".equals(id)) {
			System.out.println("getStuName");
			return "张三" ;
		}
		return "";
	}

	@Override
	public Student getStuInfo(String id) {
		Student student = new Student();
		if("1".equals(id)) {
			System.out.println("getStuInfo");
			student.setId("1");
			student.setName("张三");
			student.setPassword("123456");
			student.setAge(12);
			student.setMakedate(new Date());
		}
		return student;
	}

}



3、发布服务

可以在这里创建一个Server类。通过Endpoint的publish方法发布服务,代码中的http://localhost:8082/stu为此服务的发布地址,new MyServiceImpl()表示服务的实现类。运行main方法即可发布成功,如果发现有错误跑出,查看一下端口号是否可用。

package com.sample.server;

import javax.xml.ws.Endpoint;


public class Server {

	public static void main(String[] args) {
		Endpoint.publish("http://localhost:8082/stu", new MyServiceImpl());
	}
}



4、验证服务是否发布成功

在浏览器中输入http://localhost:8082/stu,如果出现以下内容表示服务已经发布成功


Web Services
No JAX-WS context information available.


在浏览器中输入http://localhost:8082/stu?wsdl就可以查看生成的wsdl文件,我的内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
- <!--  Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6.
  -->
- <!--  Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6.
  -->
- <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://server.sample.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://server.sample.com/" name="MyServiceImplService">
- <types>
- <xsd:schema>
  <xsd:import namespace="http://server.sample.com/" schemaLocation="http://localhost:8082/stu?xsd=1" />
  </xsd:schema>
  </types>
- <message name="getStuName">
  <part name="parameters" element="tns:getStuName" />
  </message>
- <message name="getStuNameResponse">
  <part name="parameters" element="tns:getStuNameResponse" />
  </message>
- <message name="getStuInfo">
  <part name="parameters" element="tns:getStuInfo" />
  </message>
- <message name="getStuInfoResponse">
  <part name="parameters" element="tns:getStuInfoResponse" />
  </message>
- <portType name="MyService">
- <operation name="getStuName">
  <input message="tns:getStuName" />
  <output message="tns:getStuNameResponse" />
  </operation>
- <operation name="getStuInfo">
  <input message="tns:getStuInfo" />
  <output message="tns:getStuInfoResponse" />
  </operation>
  </portType>
- <binding name="MyServiceImplPortBinding" type="tns:MyService">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
- <operation name="getStuName">
  <soap:operation soapAction="" />
- <input>
  <soap:body use="literal" />
  </input>
- <output>
  <soap:body use="literal" />
  </output>
  </operation>
- <operation name="getStuInfo">
  <soap:operation soapAction="" />
- <input>
  <soap:body use="literal" />
  </input>
- <output>
  <soap:body use="literal" />
  </output>
  </operation>
  </binding>
- <service name="MyServiceImplService">
- <port name="MyServiceImplPort" binding="tns:MyServiceImplPortBinding">
  <soap:address location="http://localhost:8082/stu" />
  </port>
  </service>
  </definitions>


(二)、创建客户端

1、创建客户端类MyClient

这里解释一下QName的两个参数:
第一个参数值是上面生成的wsdl文件中targetNamespace的值,我的为"http://server.sample.com/"。这个值实际上就是包名的反转。


第二个参数为:

name="MyServiceImplService">



运行此方法可以在控制台打印出getStuName,表示访问成功。

package com.sample.client;

import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

import com.sample.server.MyService;


public class MyClient {

	public static void main(String[] args) throws MalformedURLException {
		String address = "http://localhost:8082/stu?wsdl";
		URL url = new URL(address);
		QName qname = new QName("http://server.sample.com/", "MyServiceImplService");
		Service service = Service.create(url,qname);
		MyService tMyservice = service.getPort(MyService.class);
		tMyservice.getStuName("1");
	}
}


(三)、遗留问题

上面这种访问方式,我们会发现在客户端中要依赖MyService这个类,而实际工作中,我们根本无法获取到MyService,服务商也不可能为我们提供这个接口,所以,我们将在下一节中通过wsimport来解决这个问题。

分享到:
评论

相关推荐

    如何基于JAX-WS开发一个WebService实例

    JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和消费Web服务。本篇将深入讲解如何基于JAX-WS开发一个WebService实例。 首先,让我们了解JAX-WS的基本概念。JAX-WS提供了一种简单的方式...

    Jax-ws所需要的JAR包

    它简化了创建和使用Web服务的过程,使得开发者能够通过SOAP消息与远程服务进行交互。JAX-WS允许开发者将服务接口直接映射到SOAP消息,提供了强类型化的客户端调用API。 在Java应用服务器,如Tomcat中使用JAX-WS时,...

    jax-ws创建webservice

    Java API for XML Web Services(jax-ws)是Java平台标准版(Java SE)和企业版(Java EE)的一部分,它为开发者提供了一种创建和消费Web服务的标准方式。jax-ws允许开发人员通过简单的编程模型来实现基于SOAP的Web...

    webservice之jax-ws

    JAX-WS,全称为Java API for XML Web Services,是Java平台上的一个标准,用于构建和部署基于SOAP(Simple Object Access Protocol)的Web服务。它是Java SE和Java EE平台的一部分,简化了开发人员在Web服务领域的...

    jax-ws webservice demo

    基于jax-ws 实现的web service client和server端的demo程序。 注:如果使用的是 myeclipse 时 server 部署到tomcat 启动的时候会报错 解决办法:找到myeclipse安装目录下的 plugins 目录里 查找 webservices-rt.jar,...

    MyEclipse基于JAX-WS开发Webservice+WebserviceClient客户端调用.zip

    【标题】"MyEclipse基于JAX-WS开发Webservice+WebserviceClient客户端调用" 涉及到的关键技术主要包括MyEclipse集成开发环境、JAX-WS规范、Web服务(Webservice)以及客户端调用。下面将详细介绍这些概念及其相互...

    java WebService Jax-WS创建

    总结来说,创建Java WebService Jax-WS主要涉及创建项目、编写服务类、生成Web服务,以及在MyEclipse环境中部署和测试。通过这些步骤,开发者可以快速地将Java类转换为可供其他系统调用的Web服务。

    jax-ws api jar包

    总的来说,JAX-WS API是Java开发SOAP Web服务的核心工具,提供了高效、易于使用的API来创建和调用Web服务。`jaxws-api-2.2.1.jar`这个库文件包含了实现这些功能所需的所有类和接口,是开发人员进行JAX-WS开发的必备...

    jax-ws实现webservice调用

    它使得开发人员能够轻松地创建、部署和使用基于SOAP(简单对象访问协议)的Web服务。在本教程中,我们将深入探讨如何使用JAX-WS来发布和调用Web服务。 ### 1. JAX-WS概述 JAX-WS提供了一种简化的方式,将Java方法...

    基于JDK自带的Web服务JAX-WS实现WebService的简单示例

    Java 基于第三方插件实现WebService实在麻烦,尤其是要添加几十M的Jar包...还好,自从JDK 1.6开始,Java自身已经支持WebSeervice的开发即JAX-WS,附件是一个简单的示例,供入门参考。注意,JDK环境要求1.6及以上版本。

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例 - 外衣 - 博客频道 - CSDN_NET.mht

    jax-ws发布webservice

    Java API for XML Web Services(JAX-WS)是Java平台上的一个标准,用于构建和部署Web服务。它简化了Web服务的开发,使得Java开发者能够更方便地创建、调用和部署SOAP(Simple Object Access Protocol)服务。在这个...

    JAX-WS_WebService.rar

    JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用

    JAX-WS 2.2 RI所有相关jar包

    JAX-WS 2.2 RI 所包含的JAR包集合,包含25个JAR包,列表如下: FastInoset.jar gmbal-api-only.jar ha-api.jar javax.annotation.jar javax.mail_1.4.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jaxws-api...

    jax-ws webservice简单demo

    在这个"jax-ws webservice简单demo"中,我们将探讨JAX-WS的基础知识、如何创建一个简单的Web服务以及如何测试这个服务。 首先,JAX-WS的核心组件包括: 1. **Service端点接口(SEI, Service Endpoint Interface)**...

    基于JAX-WS2.2开发WebService所需jar资源包

    使用 Eclipse JavaEE 开发 WebService 时,若选择手动创建原生的JAX-WS服务,需要导入此jar资源(教程详见我的博文https://blog.csdn.net/weixin_50604409/article/details/116399530)。 如果您同时装有 IntelliJ ...

    jax-ws WebService客户端与服务端工程.rar

    这个"jax-ws WebService客户端与服务端工程.rar"压缩包文件包含了一个完整的示例,展示了如何使用JAX-WS创建和消费Web服务。让我们深入探讨一下JAX-WS的核心概念和技术。 1. **Web服务基础**: - **SOAP(Simple ...

    JAX-WS2.0 API

    JAX-WS(Java API for XML Web Services)2.0 API 是Java平台上的一个标准接口,用于创建和消费Web服务。它提供了一种简单、类型安全且与平台无关的方式来实现基于SOAP(Simple Object Access Protocol)的Web服务。...

    使用JAX-WS(JWS)发布WebService

    使用JAX-WS(JWS)发布WebService 使用myeclipse开发java的webservice的两种方式 方式一: (此方式只能作为调试,有以下bug:jdk1.6u17?以下编译器不支持以Endpoint.publish方式发布document方式的soap,必须在...

    webservice Demo注解+jax-ws

    它是Java平台的标准组件,用于创建和处理Web服务。JAX-WS使得开发人员能够通过简单的接口定义和注解来构建Web服务,从而简化了Web服务的开发过程。与早期的Java API for XML Processing (JAX-RPC)相比,JAX-WS更符合...

Global site tag (gtag.js) - Google Analytics