学习了一段时间webservice了,感受颇深,用处很大啊,贴出来helloworld刚开始学习这块技术时的学习讨论下
服务端:
接口类:
package com.hoo.service;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
/***
* 客户端调用WebService所需要的接口
* @author huawei
* 备注:
* 1、接口在webservice的访问中,具有相当重要的作用,客户端的访问就是通过访问服务端的接口,调用起方法。
* 2、webservice的注释,用于在wsdl中显示,作用是便于访问者阅读理解和调用接口内的方法。
* 3、实体类应该继承WebService的接口,但是实体类中的注解不起作用。
* 3、WebService常用的元注释:
* @WebService:将接口发布成为服务,暴露方法,在实现类中使用endpointInterface会起作用
* @SOAPBinding:服务端接受和发送消息的编码样式,在实现类中无效果
* @WebMethod:对接口中方法是否需要暴露和暴露后的一些参数指定,在实现类中无效果
* @WebResult:对调用该暴露方法的返回类型进行注释,在实现类中无效果
* @WebParam:对暴露方法的参数进行注释,在实现类中无效果
*/
import javax.jws.soap.SOAPBinding.Use;
@WebService
@SOAPBinding(style = Style.DOCUMENT,use=Use.LITERAL)//定义发送到 Web Service 的消息和从 Web Service 发送的消息的编码样式
public interface IHelloWorldService {
@WebMethod(operationName="sayHello",exclude=false)
@WebResult(name="String")//指定调用该方法返回的名字
public String sayHello(@WebParam(name = "用户名") String name);
}
接口的实现类:
package com.hoo.service.impl;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import com.hoo.service.IHelloWorldService;
/***
* 服务端发布的实体类
* @author huawei
*
*/
@WebService
@SOAPBinding(style = Style.RPC)
public class HelloWorldService implements IHelloWorldService{
public String sayHello(@WebParam(name = "name") String name){//不起作用的@WebParam
return name + " say: Hello World";
}
//非接口的方法
public String testHayHello(@WebParam(name="用dddddd名") String name) {//不会被发布
return name + " sayHello;";
}
}
服务端服务启动:
package com.hoo.service.deploy;
/*import javax.xml.ws.Endpoint; */
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import com.hoo.service.IHelloWorldService;
import com.hoo.service.impl.HelloWorldService;
/**
* <b>function:</b> 发布CXF WebService
* 总结:
* 发布方式:JaxWsServerFactoryBean.create()方法 或 Endpoint.publish(address, service);
* 发布类:发布的类是实体类
* 注意:通过这种方式发布的WebService不符合wsdl规范,留此作为参考,具体参见类DeployInterceptorService
**/
public class DeployHelloWorldService {
public static void deployService(){
//发布方式一
/*System.out.println("Server start ......");
HelloWorldService service = new HelloWorldService();
String address = "http://localhost:8080/webservice?wsdl";
//发布
Endpoint.publish(address, service);*/
//发布方式二(推荐)
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
String address = "http://localhost:8080/webservice?wsdl";
factory.setServiceClass(IHelloWorldService.class);//serviceClass:必须是一个接口
factory.setServiceBean(new HelloWorldService());//serviceBean:是一个实现接口的实现类
factory.setAddress(address);
factory.create();
}
public static void main(String[] args) throws InterruptedException{
//发布Webservice
deployService();
System.out.println("server ready ......");
Thread.sleep(1000*60);
System.out.println("server exiting");
//休眠60秒后退出
System.exit(0);
}
}
客户端调用测试(这个示例是写在同一项目内的,也可以自己分开来做,原理一样):
package com.hoo.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.hoo.service.IHelloWorldService;
/***
* 客户端调用代码
* 总结:
* 调用方式:IHelloWorldService service = (IHelloWorldService)factory.create();
* 调用类:通过调用服务端接口类型,factory.create()返回该接口类
* @author huawei
*
*/
public class HelloWorldServiceClient {
public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
//必须是一个接口
factory.setServiceClass(IHelloWorldService.class);
factory.setAddress("http://localhost:8080/webservice?wsdl");
//创建接口对象
IHelloWorldService service = (IHelloWorldService)factory.create();
System.out.println("[result]" + service.sayHello("hoojo"));
}
}
OK,上述代码考到java IDE中即可,测试通过。
有疑问期待与我留言。
相关推荐
在本教程中,我们将探讨“webservice复习-helloworld”这个主题,它是一个基础的Web服务示例,帮助开发者理解和掌握Web服务的基本概念和实现。 首先,Web服务的核心标准是SOAP(Simple Object Access Protocol),...
标题 "我的webservice Hello world-axis" 指的是一个基于Apache Axis实现的Web服务示例,主要用于初学者学习和理解Web服务的基本概念。Apache Axis是一个开源的SOAP(简单对象访问协议)工具包,用于创建和部署Web...
1. SOAP:SOAP是一种轻量级的、简单的、基于XML的消息协议,用于在分布式环境中交换结构化和类型化的信息。SOAP消息通常由三部分组成:Header、Body和Fault。Header用于提供额外的信息,Body是消息的主要内容,Fault...
【标签】"websphere"、"helloworld"、"webservice",这三个标签分别代表了教程所涉及的主要技术点:IBM的Websphere应用服务器,一个基础的示例程序,以及Web服务技术。 【压缩包子文件的文件名称列表】中的文件可能...
"HelloWorld WebService Server" 是一个入门级的示例,旨在帮助初学者理解Web服务的工作原理,特别是服务器端的部分。在这个项目中,我们将深入探讨Web服务的概念、工作流程以及如何创建一个简单的 HelloWorld ...
【HelloWorld WebService Client】是入门级的示例项目,主要展示了如何创建并使用一个简单的Web服务客户端。在Web服务的世界里,客户端是能够与服务器交互、调用服务功能的应用程序。这个项目的核心目标就是教导...
这段代码启动了一个在`http://localhost:8080/HelloWorld`地址上提供服务的XFire服务器。 ### 客户端调用 对于客户端,你可以使用CXF的`JaxWsProxyFactoryBean`来创建一个代理对象,这个对象可以像调用本地方法...
public string HelloWorld() { return "Hello, World!"; } } ``` 3. **WebMethod特性**:`[WebMethod]`是用于标记可以被远程调用的方法的关键字。它告诉.NET框架这个方法应该作为WebService的一部分暴露出去...
HelloWorld helloWorld = service.getPort(HelloWorld.class); System.out.println(helloWorld.sayHello("World")); ``` 接下来,我们转向CXF框架,它提供了一种更简洁、更强大的方式来处理Web服务。CXF不仅支持JAX...
本文将详细介绍如何使用Apache CXF框架来实现一个简单的WebService——HelloWorld示例。此示例不仅适用于初学者理解WebService的基本概念,同时也能够帮助开发者快速上手CXF框架。CXF是一个强大的开源框架,用于构建...
标题中的“xfire-HelloWorld.rar_webservice_webservice FPGA_xfire hellowor”提到了几个关键元素:xfire、webservice、FPGA以及一个简单的示例应用“HelloWorld”。这表明我们将探讨的是如何使用xfire这个框架来...
在上述示例中,我们创建了一个客户端,连接到指定的WebService端点,并调用了其中的sayHello方法。 关于"MAS"标签,它可能指的是“Multi-Agent System”(多智能体系统),在分布式计算环境中,多个具有自主性的...
**WebService (一) CXF 入门 HelloWorld** 在IT行业中,WebService是一种基于开放标准(如XML、WSDL和SOAP)的互联网通信协议,允许不同...希望这个HelloWorld示例能为你进一步探索CXF和Web服务提供一个良好的起点。
本示例只是一个cxf的简单的一个helloWorld程序,运行时先运行webServiceApp.java,再在地址栏中输入http://localhost:8080/helloWorld,如果在浏览器中有一串xml输出则成功,然后再运行HelloWorldClient.java文件...
【WebService版集成Spring的HelloWorld】是一个典型的教程,旨在帮助开发者了解如何在Spring框架中集成和使用WebService技术。在这个教程中,我们将深入探讨以下几个关键知识点: 1. **WebService概述**: ...
假设我们有一个名为`HelloWorld`的服务类,它有一个`sayHello`方法,用于返回一个问候语: ```java public class HelloWorld { public String sayHello(String name) { return "Hello, " + name + "!"; } } ``` ...
例如,可以创建一个名为`HelloWorld`的方法,接收并返回字符串。 ```csharp [WebService(Namespace = "http://example.com/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class ...
【标题】"学习Atlas的第一个源码之HelloWorld" 指的是一个教程或者示例项目,目的是引导初学者了解和使用Atlas...这个HelloWorld示例是一个很好的起点,可以帮助新手快速上手,并为进一步学习复杂的Atlas功能打下基础。
@WebServiceClient(name = "HelloWorldService", targetNamespace = "http://example.com/helloworld", wsdlLocation = "http://localhost:8080/your-app/HelloWorld?wsdl") public class HelloWorldService extends...
HelloWorld proxy = service.getPort(HelloWorld.class); System.out.println(proxy.sayHello("User")); ``` - REST客户端(使用HttpURLConnection): ```java URL url = new URL("http://example.com/hello...