webservice的简单运用

Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。

Web Service的关键技术和规则:

1.XML:描述数据的标准方法.

2.SOAP:表示信息交换的协议(简单对象访问协议).

3.WSDL:Web服务描述语言.

4.UDDI:通用描述、发现与集成,他是一种独立于平台,基于XML语言的用于在互联网上描述商务的协议。

一、利用JDK web服务api实现,这里使用基于SOAP message的Web Service:

1.首先创建一个Web Services项目

2.创建一个SayHello.java类,执行类,生成wsdl文件

@WebService
public class SayHello {

public String hello(String message){  
        return "Hello ," + message;  
    }  
      
    public static void main(String[] args) {  
        //create and publish an endPoint  
        SayHello hello = new SayHello();  
        Endpoint.publish("http://localhost:8080/hello", hello);  
    }  
}

可通过http://localhost:8080/hello?wsdl查看

三、执行dos命令执行:wsimport -p wsp.service -keep http://localhost:8080/hello?wsdl,生成文件取.java文件到项目中

  生成文件:

粘贴到项目中的java文件,用于调用

四、编写调用类进行调用,注意:调用的服务是生成的,不是自己写的

package wsp.main;

import wsp.service.SayHello;注意这儿
import wsp.service.SayHelloService;

public class Execute {

public static void main(String[] args) {
        SayHelloService shs = new SayHelloService();
        SayHello sh = shs.getSayHelloPort();
        System.out.println(sh.hello("TOM"));
    }
}

中间出现的错误,原因可能是,包不对,注意生成java代码的时候生成的包要和存到项目中的包名一样,避免修改包名和不必要的麻烦

Exception in thread "main" javax.xml.ws.WebServiceException: Unable to create JAXBContext
    at com.sun.xml.internal.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:156)
    at com.sun.xml.internal.ws.model.AbstractSEIModelImpl.postProcess(AbstractSEIModelImpl.java:84)
    at com.sun.xml.internal.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:235)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.createSEIPortInfo(WSServiceDelegate.java:652)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.addSEI(WSServiceDelegate.java:640)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:332)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:315)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:297)
    at javax.xml.ws.Service.getPort(Service.java:119)
    at wsp.service.SayHelloService.getSayHelloPort(SayHelloService.java:72)
    at wsp.main.Execute.main(Execute.java:10)
Caused by: java.security.PrivilegedActionException: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
Two classes have the same XML type name "{http://webservice.wsp/}hello". Use @XmlType.name and @XmlType.namespace to assign different names to them.
    this problem is related to the following location:
        at wsp.service.Hello
        at public javax.xml.bind.JAXBElement wsp.service.ObjectFactory.createHello(wsp.service.Hello)
        at wsp.service.ObjectFactory
    this problem is related to the following location:
        at wsp.webservice.Hello
Two classes have the same XML type name "{http://webservice.wsp/}helloResponse". Use @XmlType.name and @XmlType.namespace to assign different names to them.
    this problem is related to the following location:
        at wsp.service.HelloResponse
        at public wsp.service.HelloResponse wsp.service.ObjectFactory.createHelloResponse()
        at wsp.service.ObjectFactory
    this problem is related to the following location:
        at wsp.webservice.HelloResponse

at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.xml.internal.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:143)
    ... 10 more
Caused by: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
Two classes have the same XML type name "{http://webservice.wsp/}hello". Use @XmlType.name and @XmlType.namespace to assign different names to them.
    this problem is related to the following location:
        at wsp.service.Hello
        at public javax.xml.bind.JAXBElement wsp.service.ObjectFactory.createHello(wsp.service.Hello)
        at wsp.service.ObjectFactory
    this problem is related to the following location:
        at wsp.webservice.Hello
Two classes have the same XML type name "{http://webservice.wsp/}helloResponse". Use @XmlType.name and @XmlType.namespace to assign different names to them.
    this problem is related to the following location:
        at wsp.service.HelloResponse
        at public wsp.service.HelloResponse wsp.service.ObjectFactory.createHelloResponse()
        at wsp.service.ObjectFactory
    this problem is related to the following location:
        at wsp.webservice.HelloResponse

at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:91)
    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:451)
    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:283)
    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:126)
    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1142)
    at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:173)
    at com.sun.xml.internal.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:96)
    at com.sun.xml.internal.ws.developer.JAXBContextFactory$1.createJAXBContext(JAXBContextFactory.java:98)
    at com.sun.xml.internal.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:151)
    at com.sun.xml.internal.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:143)
    ... 12 more

时间: 2024-09-29 05:17:47

webservice的简单运用的相关文章

c#webservice的简单示例

webservice.就概念上来说,可能比较复杂,不过我们可以有个宏观的了解:webservice就是个对外的接口,里面有 函数可供外部客户调用(注意:里面同样有客户不可调用的函数).假若我们是服务端,我们写好了个webservice,然后把它给了客户(同时我们给了他们调用规则),客户就可以在从服务端获取信息时处于一个相对透明的状态.即使客户不了解(也不需要)其过程,他们只获取数据. webservice传递的数据只能是序列化的数据,典型的就是xml数据. 下面以一个简单例子为例: (一)新建—

WebService的简单应用

具体看项目源文件:包含: ip地址查询, QQ在线状态查询,和自定义的MD5 破解和加密(呵呵有形无势...) http://pan.baidu.com/s/1bn09WQj SOAP 1.1 The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values. POST /MD5Crack.asmx HTTP/1.1 Host

webservice Dome--一个webservice的简单小实例

1.理解:webservice就是为了实现不同服务器上不同应用程序的之间的通讯 2.让我们一步一步的来做一个webservice的简单应用 1)新建一个空的web应用程序,在程序上右键,新建项目,选择"web服务",会出现一个weservice1.asmx程序,程序如下: namespace WebApplication1 { /// <summary> /// WebService1 的摘要说明 /// </summary> [WebService(Names

webservice之简单创建和发布(一个加法运算)

webservice之简单创建和发布(一个加法运算) 开发工具 visual studio 2010 WebService:严格来说是行业标准,不是技术,使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键).微软的Web服务实现称为ASP.NET Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互. WSDL来实现服务接口相关的描述.此外Web services 可以注册到UDDI中心.供其客户查找使用.后来微软做了ASP.NET Web Se

webservice的简单使用,cxf框架的的使用

Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间, 无论它们所使用的语言. 平台或内部协议是什么, 都可以相互交换数据.Web Service是自描述.

C# 创建、部署和调用WebService的简单示例

废话不多说,下面开始创建一个简单的webservice的例子.这里我用的是Visual Studio 2015开发工具. 首先创建一个空的Web应用程序. 然后鼠标右键点击项目,选择 添加>新建项. 选择Web服务,点击添加.一个简单的webservice就创建完成了,接下来编写两个简单的方法. PS:如果方法需要通过webservice的地址进行调用,那就必须在方法上面打上 [WebMethod] 的特性标签,否则是无法通过webservice访问到的.Description 是方法的描述.

cxf方式实现WebService的简单实例

cxf实现WebService的发布和调用简单实例. 1.准备工作:下载cxf  http://cxf.apache.org/download.html lib文件下的WHICH_JARS文件列出了各用途下所需的jar包. bin目录下存放运行文件. 2.服务端:先新建接口和相关的实现类.发布的服务是接口的方式. 代码如下 1 package com.liujf; 2 3 import javax.jws.WebParam; 4 import javax.jws.WebService; 5 6

.NET C# 创建WebService服务简单的例子

Web service是一个基于可编程的web的应用程序,用于开发分布式的互操作的应用程序,也是一种web服务 WebService的特性有以下几点: 1.使用XML(标准通用标记语言)来作为数据交互的格式. 2.跨平台性,因为使用XML所以只要本地应用可以连接网络解析XML就可以实现数据交换,比如安卓.IOS.WindowsPhone等都可以实现对Web service的数据交互. 3.基于HTTP协议,直接跨越防火墙,通用型强: 下面使用Visual Studio 2013(其他VS版本亦是

WebService的简单调用

一.简介 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, 轻量级的独立的通讯技术XML:扩展型可标记语言.面向短期的临时数据处理.面向万维网络,是Soap的基础Soap:简单对象存取协议 .是XML WebService的通信协议 当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作UDDI:是一个主要针对Web服务供应商和使用者的

C# 创建、部署、调用 webservice 的简单列子

webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互. 首先创建一个空的 web 应用程序 然后鼠标右键点击项目,选择 add > new item 选择 web 服务,点击 add, 一个简单的 webservice 就创建完成了,接下来编写两个简单的方法 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Servic