EJB3.0(二)

web service:

1.什么是web service?有什么用?

2.web service的调用原理

3.web service的特点(优缺点)?

4.什么是wsdl?有什么用?

5.什么是soap?有什么用?

6.如何开发和使用一个web服务

 

什么是web service?有什么用?

一句话,web servicesoa的实现,它实现了将异构的系统集成并互操作

作用: 没有语言约束,不依赖平台,实现资源共享,节省重复的开发

例如:一个c++开发的系统,发布为web服务,一些另外的系统需要使用这个服务,拿来用就可以了,不用管它是用什么语言开发的在什么平台上开发的

 

web service的实现原理?(如何实现的?):

服务如何实现呢?

需要解决两个问题:

1.这是个什么服务:服务的发布者需要对服务进行描述(就是要说明这个应用的功能)

2.如何使用这个服务:有一个标准(制定一个调用的API或标准)

第一个问题:由公共接口+wsdl(web服务描述语言)技术解决

第二个问题:uddi(统一描述,查找,集成的标准)+soap技术解决

 

什么是uddi?什么是soap?什么是wsdl?

Wsdl:描述web服务的功能的,是描述web服务功能的语法标准

Soap:简单对象访问协议,是一个通讯协议,基于xml开发的,按照这个协议来告诉使用者如何使用该web服务

Uddi:用来查找internet上的web service

 

客户调用服务(查找:uddi)--服务注册器(描述服务:wsdl)--找到服务后与服务绑定(

:soap)

事实上不用服务注册器uddi也不影响web服务的发布与使用

 

web service的特点(优缺点)?

优点:资源共享,跨语言,跨平台

缺点:Web Service在通过Web进行互操作或远程调用的时候是最有用的.不过,也有一些

情况,Web Service根本不能带来任何好处

短处一:单机应用程序    

目前,企业和个人还使用着很多桌面应用程序。其中一些只需要与本机上的其它程

序通信。在这种情况下,最好就不要用Web   Service,只要用本地的API就可以了。

COM非常适合于在这种情况下工作,因为它既小又快。运行在同一台服务器上的服务器

软件也是这样。最好直接用COM或其它本地的API来进行应用程序间的调用。当然Web  

Service也能用在这些场合,但那样不仅消耗太大,而且不会带来任何好处。    

短处二:局域网的同构应用程序

在许多应用中,所有的程序都是用VBVC开发的,都在Windows平台下使用COM,都

运行在同一个局域网上。例如,有两个服务器应用程序需要相互通信,或者有一个Win32WinForm的客户程序要连接局域网上另一个服务器的程序。在这些程序里,使用DCOM会比SOAP/HTTP有效得多。与此相类似,如果一个.NET程序要连接到局域网上的另一个.NET程序,应该使用.NET   remoting。有趣的是,在.NET   remoting中,也可以指定使用SOAP/HTTP来进行Web   Service   调用。不过最好还是直接通过TCP

RPC调用,那样会有效得多

 

什么是wsdl?有什么用?

Web服务描述语言,用来定义web服务具体提供的服务功能的,体现为公共接口

 

什么是soap?有什么用?

互操作协议,通常情况下是通过http传输协议进行传输的

例如:人起立坐下看为一个服务,那么这个服务的互操作协议是发出命令,说坐下或者起立这个命令服务就执行,这个指令就是互操作协议,也就是soap,那么这个指令怎么发送的呢?通过声音,那么声音就是传输协议,通常情况下传输协议使用的是http协议,当然也可以使用其它的协议

Soap说明如果使用该服务那么应该执行什么样的标准,也就是如何使用服务

 

web服务背景:

如何实现互操作涉及到两个问题:

1.公共接口:描述服务

2.互操作协议:怎么使用,提供一个使用服务的标准,这个标准的统一的标准,不依赖语

,ejb中叫做远程方法调用协议

例如:中国人,美国人,西班牙人 他们之间的互操作协议为 英语,web服务使用的协议就

是这样的统一的标准协议,因为web服务是基于xml,所以说所有的服务使用的语言都

xml映射

 

web服务和web应用的区别:

web应用是人机交互,web服务是应用对应用,例如:我的网站需要天气预报的功能,那么就可以订阅提供天气预报的web service

web服务以后是个趋势,但是现在技术还不完善,主要是企业级的质量服务没有完善(:

安全,事务)

 

web服务的角色:

服务的提供者:提供一个wsdl给服务注册器

服务的请求者:uddi这个协议去找

服务的注册器:uddi注册,一些列服务的列表,请求者可以到这里来查找需要的服务,

到后,邦定到具体的服务上,邦定到具体的协议,这就是邦定

uddi:统一描述发布集成

公共接口的标准:wsdl web服务描述语言

 

如何开发和使用一个web服务:

ejb的无状态sessionbean发布为web服务

1.开发sessionbean

2.sessionbean发布为web service

3.开发web服务客户端

4.写客户代码调用web服务

 

将无状态的sessionbean发布为web service   

/*

 * HelloBean.java

 *

 * Created on 2007 6 7 , 下午9:04

 *

 * To change this template, choose Tools | Template Manager

 * and open the template in the editor.

 */

 

package session;

 

import javax.ejb.Stateless;

import javax.jws.WebMethod;

import javax.jws.WebService;

 

/**

 *

 * @author yuchen

 */

 

@Stateless()

@WebService(serviceName="Greeter",portName="GreeterPort")

public class HelloBean {

   

    @WebMethod

    public String hello(){

        System.out.println("helloworld");

        return "helloworld!";

    }

}

 

创建web service client,ide工具帮助我们实现配置文件

 

调用web服务

package we;

 

import java.net.MalformedURLException;

import java.net.URL;

import javax.xml.namespace.QName;

import javax.xml.ws.Service;

import testservice.*;

 

/**

 *

 * @author yuchen

 */

public class Main {

   

    /** Creates a new instance of Main */

    public Main () {

    }

   

    /**

     * @param args the command line arguments

     */

    public static void main(String[] args) throws MalformedURLException {

        // TODO code application logic here

       

        URL wsdlLocation=new URL("http://127.0.0.1:8081/Greeter/HelloBean?

WSDL");

        QName serviceNameQ=new QName("http://session/","Greeter");

       

        Service service=Service.create(wsdlLocation,serviceNameQ);

        HelloBean firstGreetPort=service.getPort(HelloBean.class);

        System.out.println("1:"+firstGreetPort.hello());

 

    }

   

} 

serviceName=”Greeter”

nameSpace=http://session/

portType=”HelloBean”

像这些值,可以在wsdl.xml文件中找到

Xml文件,通过建立web service client IDE帮助创建完成

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值