对WebService的个人理解:
1.使用cxf实现WebService:(仅自己测试使用)
①要想使用cxf实现webservice首先要导入cxf所需要的jar包,然后编写一个接口和一个接口实现类。接口和实现类都必须使用@WebService进行标注。在接口中和实现类中写一个简单的返回字符串的方法。
②在写完接口和实现类之后开始写一个带有Main方法的java类来启动Webservice。
在Main方法中要新建一个工厂服务器:JaxWsServerFactoryBean factory=new JaxWsServerFactoryBean();//新建一个工厂服务器
factory.setServiceClass(HelloWorldImpl.class);//来加载服务的类,参数是接口实现类的class文件
factory.setAddress("http://localhost:8080/HelloWorld");//设置地址
Server s=factory.create();//通过工厂得到Server(是org.apache.cxf.endpoint.Server包下的)
s.start();//启动Server
当在控制台中显示成功时,在浏览器中打上设置的网站,再追加上?WSDL就会得到生成的WSDL文件。
③为WebService建立客户端
新建一个含有Main方法的类,在类中使用代理工厂来建立webservice客户端。
JaxWsProxyFactoryBean factory=new JaxWsProxyFactoryBean();//新建代理工厂实例
factory.setAddress("http://localhost:8080/HelloWorld");//设置连接地址
factory.setServiceClass(HelloWorld.class);//设置接口类型(参数为接口而不是实现类)
HelloWorld h=(HelloWorld) factory.create();//通过工厂创建接口。
System.out.println(h.sayHello("Jack"));
写完客户端和服务端,先启动服务端,在运行客户端,在客户端的控制台会显示接口实现类方法返回的内容,在服务端的控制台会显示接口实现类中的一些新增内容。
2.解析WebService生成的WSDL文件
在每个生成的WSDL文件中都有根元素:<wsdl:definitions name="接口实现类名字+Service" ……>
还有几个主要的元素<wsdl:types ……对应接口中参数的和返回值的类型>、<wsdl:message……>请求和响应都包装在message里、<wsdl:portType>、<wsdl:binding……>、<wsdl:service……>
3.WebService的工作原理:(包含WSDL和SOAP)
WSDL:是描述WebService为客户端提供哪些服务,以及告诉客户端怎样调用服务
SOAP:是描述客户端和服务端之间的请求响应
客户端和服务端之间的联系:
①客户端发送get请求给服务端②服务端返回给客户端一个WSDL文件③客户端解析WSDL文件后发送SOAP请求给服务端④服务端返回SOAP响应结果
SOAP简单的说就是有一定规则的xml文件。为看看SOAP可以在服务端java类中添加拦截器,添加请求拦截器,添加一个新的日志拦截器
factory.getInInterceptors().add(new LoggingInInterceptor());和添加一个响应拦截器
factory.getOutInterceptors().add(new LoggingOutInterceptor());,来分别看看SOAP文件。
1.使用cxf实现WebService:(仅自己测试使用)
①要想使用cxf实现webservice首先要导入cxf所需要的jar包,然后编写一个接口和一个接口实现类。接口和实现类都必须使用@WebService进行标注。在接口中和实现类中写一个简单的返回字符串的方法。
②在写完接口和实现类之后开始写一个带有Main方法的java类来启动Webservice。
在Main方法中要新建一个工厂服务器:JaxWsServerFactoryBean factory=new JaxWsServerFactoryBean();//新建一个工厂服务器
factory.setServiceClass(HelloWorldImpl.class);//来加载服务的类,参数是接口实现类的class文件
factory.setAddress("http://localhost:8080/HelloWorld");//设置地址
Server s=factory.create();//通过工厂得到Server(是org.apache.cxf.endpoint.Server包下的)
s.start();//启动Server
当在控制台中显示成功时,在浏览器中打上设置的网站,再追加上?WSDL就会得到生成的WSDL文件。
③为WebService建立客户端
新建一个含有Main方法的类,在类中使用代理工厂来建立webservice客户端。
JaxWsProxyFactoryBean factory=new JaxWsProxyFactoryBean();//新建代理工厂实例
factory.setAddress("http://localhost:8080/HelloWorld");//设置连接地址
factory.setServiceClass(HelloWorld.class);//设置接口类型(参数为接口而不是实现类)
HelloWorld h=(HelloWorld) factory.create();//通过工厂创建接口。
System.out.println(h.sayHello("Jack"));
写完客户端和服务端,先启动服务端,在运行客户端,在客户端的控制台会显示接口实现类方法返回的内容,在服务端的控制台会显示接口实现类中的一些新增内容。
2.解析WebService生成的WSDL文件
在每个生成的WSDL文件中都有根元素:<wsdl:definitions name="接口实现类名字+Service" ……>
还有几个主要的元素<wsdl:types ……对应接口中参数的和返回值的类型>、<wsdl:message……>请求和响应都包装在message里、<wsdl:portType>、<wsdl:binding……>、<wsdl:service……>
3.WebService的工作原理:(包含WSDL和SOAP)
WSDL:是描述WebService为客户端提供哪些服务,以及告诉客户端怎样调用服务
SOAP:是描述客户端和服务端之间的请求响应
客户端和服务端之间的联系:
①客户端发送get请求给服务端②服务端返回给客户端一个WSDL文件③客户端解析WSDL文件后发送SOAP请求给服务端④服务端返回SOAP响应结果
SOAP简单的说就是有一定规则的xml文件。为看看SOAP可以在服务端java类中添加拦截器,添加请求拦截器,添加一个新的日志拦截器
factory.getInInterceptors().add(new LoggingInInterceptor());和添加一个响应拦截器
factory.getOutInterceptors().add(new LoggingOutInterceptor());,来分别看看SOAP文件。