webservice hello world
Web service是一个平台独立的跨语言、跨平台,低耦合的,自包含的、基于SOAP(simple object access protocal)协议的可编程的web的应用程序,可远程接口访问。可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。 1、WebService术语再写helloworld之前,我们先来介绍一下webService里面的术语: 1) WSDL 2) SOAP 3) SEI SEI(webservice endpoint interface),服务端口接口。基于SOAP的Java Web服务尽管可以只由单独的Java类来实现,但是遵从最佳实践原则,首先应该定义一个Java接口类,在此接口内声明Web服务需要完成或实现的业务方法。通常这类接口被称为”SEI”,即服务端点接口(Service Endpoint Interface)。 我们先来基于JDK的实现一个Webserivce的Helloworld,然后再来分析一下,Webservice的实现原理。 2、创建Webservice-service项目1) 项目结构 2) UserService.Java @WebService
public interface UserService {
void sayHi(String username);
}
3) UserServiceImpl.Java @WebService
public class UserServiceImpl implements UserService {
@WebMethod
public void sayHi(String username) {
System.out.println("hi," + username);
}
}
4) Publish.Java public class Publish {
public static void main(String[] args) {
String url = "http://localhost:8080/demo/hello";
Endpoint.publish(url,new UserServiceImpl());
System.out.println("webservice publish service success...");
}
}
5) 发布服务 启动publish.Java文件。然后进入 这个webservice远程客户端调用服务的基础。如果你也能访问那么说明你的服务发布成功了,我们后面再来分析这个xml文件。 3、创建Webservice-client项目1) 创建Webservice-client项目 使用maven创建webservice-client空项目,然后进入${webservice-client}/src/main/java.打开命令窗口,输入 2) 调用远程服务 添加test类UserServiceTest.Java进行远程服务调用测试 public class UserServiceTest {
public static void main(String[] args) {
UserServiceImplService userService = new UserServiceImplService();
String hiWord = userService.getUserServiceImplPort().sayHi("carl");
System.out.println(hiWord);
}
}
运行结果如下: 4、分析WSDL顶级元素为definitions元素,表示这个是webservice的描述语言,然后里面有以下几种子元素: 1、typesType(消息类型):数据类型定义的容器,它使用某种类型系统(如 XSD).首先我们来看一下types元素 然后我们再打开schemaLocation里面的地址: 我们可以看到在type元素中定义了远程服务暴露接口中
2、messagemessage:通信数据的抽象类型化定义,它由一个或者多个 part 组成. 我们可以看到message元素中持有调用方法请求参数与返回值类型的引用。 3、portTypePort Type(端口类型):特定端口类型的具体协议和数据格式规范。 4、bindingBinding:特定端口类型的具体协议和数据格式规范。 5、serviceService:相关端口的集合,包括其关联的接口、操作、消息等 5、请求流程其实熟悉Spring IOC的朋友可以看出来,这个和Spring的bean配置是不是很类型。Webservice的调用调用就是操作暴露服务的Service的Service这个容器。然后再调用服务的port.就可以获取到远程服务,这样就进行远程调用了。 请求的消息格式类型于: <soap:…..>
<sayHello>
<arg0>carl</arg0>
</sayHello>
</soap>
然后返回的消息体类型于: <sayHelloResponse>
<return>hi,carl</return>
</sayHelloResponse>
这就是webservice的请求的整个过程了,现在清晰了吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |