只需要在一个类上标注@WebService就可以了,当然这个类需要有服务方法,否则会报下面的错误:
Exception in thread "main" com.sun.xml.internal.ws.model.RuntimeModelerException: The web service defined by the class java6.webservice.HelloWorldService does not contain any valid WebMethods. at com.sun.xml.internal.ws.model.RuntimeModeler.buildRuntimeModel(Unknown Source) at com.sun.xml.internal.ws.server.EndpointFactory.createSEIModel(Unknown Source) at com.sun.xml.internal.ws.server.EndpointFactory.createEndpoint(Unknown Source) at com.sun.xml.internal.ws.api.server.WSEndpoint.create(Unknown Source) at com.sun.xml.internal.ws.api.server.WSEndpoint.create(Unknown Source) at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.createEndpoint(Unknown Source) at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(Unknown Source) at com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(Unknown Source) at javax.xml.ws.Endpoint.publish(Unknown Source) at java6.webservice.HelloWorldService.main(HelloWorldService.java:13) |
再使用Endpoint.publish()方法发布服务即可。
示例:
import javax.jws.WebService; import javax.xml.ws.Endpoint;
@WebService publicclass HelloWorldService {
public String sayHello(String name) { return"hello" + name; }
/** * @param args */ publicstaticvoid main(String[] args) { Endpoint.publish("http://localhost:8080/java6/webservice/HelloWorldService", new HelloWorldService()); }
} |
这样服务端就写好了。
Endpoint.publish是一个后台线程,一旦发布了就会一直等待处理Web服务的请求。
在浏览器中输入http://localhost:8080/java6/webservice/HelloWorldService?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://webservice.java6/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://webservice.java6/" name="HelloWorldServiceService"> - <types> - <xsd:schema> <xsd:import namespace="http://webservice.java6/" schemaLocation="http://localhost:8080/java6/webservice/HelloWorldService?xsd=1" /> </xsd:schema> </types> - <message name="sayHello"> <part name="parameters" element="tns:sayHello" /> </message> - <message name="sayHelloResponse"> <part name="parameters" element="tns:sayHelloResponse" /> </message> - <portType name="HelloWorldService"> - <operation name="sayHello"> <input message="tns:sayHello" /> <output message="tns:sayHelloResponse" /> </operation> </portType> - <binding name="HelloWorldServicePortBinding" type="tns:HelloWorldService"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> - <operation name="sayHello"> <soap:operation soapAction="" /> - <input> <soap:body use="literal" /> </input> - <output> <soap:body use="literal" /> </output> </operation> </binding> - <service name="HelloWorldServiceService"> - <port name="HelloWorldServicePort" binding="tns:HelloWorldServicePortBinding"> <soap:address location="http://localhost:8080/java6/webservice/HelloWorldService" /> </port> </service> </definitions>
|
客户端:
使用jdk的wsimport命令生成客户端代码:
编写我们调用服务的类:
import java6.webservice.client.*; publicclass HelloWorldClient {
/** * @param args */ publicstaticvoid main(String[] args) { // TODO Auto-generated method stub HelloWorldServiceService hwss = new HelloWorldServiceService(); java6.webservice.client.HelloWorldService hws = hwss.getHelloWorldServicePort(); String result = hws.sayHello("webservice"); System.out.println(result); }
}
|
运行结果:hellowebservice。
相关推荐
Java自带的JAX-WS(Java API for XML Web Services)框架提供了创建、部署和消费Web服务的能力。本文将详细介绍如何使用Java内置的工具来实现Web服务的开发、启动、部署和调用,并讨论如何设置权限。 **一、所需...
JAVA6 开发WebService JWS示例 WebService 概念 WebService 是一种软件系统,旨在支持跨网络的机器之间相互操作交互。它有一个机器可识别的描述格式,特别是 WSDL。不同的系统之间可以通过 SOAP 消息在规定的方式...
本篇文章将深入探讨Java自带的Web服务实现方式,主要涉及`javax.ws`的相关知识点。 ### 1. Web服务基础 Web服务的核心是SOAP(Simple Object Access Protocol),它是一种XML格式的消息交换协议,用于在不同的应用...
"JDK 6.0 自带 Webservice 实现实例" JDK 6.0 自带 Webservice 实现实例是使用 JDK 自带的功能来实现 Webservice 的一个示例。这个示例展示了如何使用 JDK 6.0 中自带的轻量级 Webservice 服务器来发布一个简单的 ...
- **定义**:JAX-WS(Java API for XML Web Services)是JDK 1.6自带的WebService规范之一,版本为2.1,底层支持为JAXB。 - **演进**:JAX-WS是JAX-RPC(Java API for XML Remote Procedure Call)的后续版本,JAX-...
在Java中,可以通过JDK自带的WebService API来创建和发布WebService服务端点。下面是一个简单的示例: ```java package Hello; import javax.jws.WebService; import javax.jws.WebMethod; import javax.xml.ws....
Java WebService 是一种基于标准协议(如SOAP,WSDL)的跨平台、跨语言的通信机制,用于构建可互操作的分布式系统。本篇将详细介绍Java WebService的入门实例,包括其工作原理以及如何创建和测试一个简单的...
使用Apache Axis工具(或者在MAXIMO6环境下,使用weblogic8自带的axis1.1版本)将WSDL文件转换为JAVA客户端代码。在命令行中,指定classpath包括必要的库文件,如axis.jar、axis-ant.jar等,并执行`wsdl2java`命令...
JAX-WS 2.1版本是JDK 1.6自带的版本,并且底层支持为JAXB(Java Architecture for XML Binding)。JAX-WS的API主要分布在javax.xml.ws包中。 JAXM(Java API for XML Messaging)专注于提供发送和接收XML消息的能力...
4. **wsimport工具**: wsimport是JDK自带的一个命令行工具,用于从WSDL(Web Service Description Language)文件生成Java客户端代理类。这些代理类使得Java代码能够像调用本地方法一样调用Web服务。 5. **所需的...
Java 访问.Net Webservice 的源码 ...SOAP请求使用的是java自带的 SOAPXML请求方式,注释超多,全都是手工写,并且测试通过。 普通方式是使用普通请求页面的方式请求,比较简单,但是解析XML比较麻烦。
### Java使用XFire调用WebService接口 #### 一、引言 随着互联网技术的发展,不同系统之间的通信变得越来越重要。WebService作为一种重要的分布式计算技术,在跨平台、跨语言的服务交互方面发挥着重要作用。本文将...
2. **生成客户端 stubs**:使用Java的工具,如`wsimport`(Java SDK自带),或者IDE如Eclipse、IntelliJ的插件,根据WSDL文件自动生成客户端代码(stubs)。这些stubs包含了调用服务所需的所有类和接口。 3. **创建...
4. **编写Java Bean**:快速创建一个简单的Java类,包含需要暴露为WebService的方法,如图2-3所示。 5. **生成WebService**: - 通过右键点击Java类,选择生成WebService的选项,按照图2-4至2-8的步骤操作。 - ...
总的来说,Java调用WebService提供了多种方式,如JDK自带的API和第三方框架(如XFire、CXF等)。选择哪种方式取决于项目需求,如对性能、易用性、灵活性的需求。JDK API虽然相对基础,但需要手动处理更多细节;而...
总结,Java调用WebService主要涉及SOAP协议,可以通过JDK自带的API或第三方框架(如XFire)来实现。选择哪种方法取决于项目需求,如灵活性、易用性和性能等因素。无论哪种方式,都需要理解Web服务的基本原理和相关...
本文将详细介绍三种基于WSDL生成WebService服务端的方法:使用`wsdl2java`命令、通过SOAPUI工具及借助MyEclipse的Web Service项目功能。 #### 方法一:使用`wsdl2java`命令生成 `wsdl2java`是Apache CXF提供的一个...