加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

webservice部署和发布

发布时间:2020-12-17 00:19:48 所属栏目:安全 来源:网络整理
导读:WebService: 操作步骤 : 1, ?? 发布一个 WebService a. ??????? 写一个实现类 例如 : // 使用注解注入 serviceName: 表示类名 ,portName: 端口名称 ,name 实现类名 @WebService (serviceName= "TestWebService" ,portName= "TestWebServiceInstance" ,name=

WebService:

操作步骤:

1,??发布一个WebService

a.???????写一个实现类

例如:

//使用注解注入serviceName:表示类名,portName:端口名称,name实现类名

@WebService(serviceName="TestWebService",portName="TestWebServiceInstance",name="TestWebServiceImpl")

public?class?TestWebServiceImpl{

????@WebMethod(operationName="sayHello")//操作的方法名

????//@WebParam(name="content")参数名称

????public?String sayHi(@WebParam(name="content") String content) {

???????System.out.println("TestWebServiceImpl"+content);

???????return?"访问成功...";

????}

}

?

//发布类

class?WSClient {

static?void?main(String[] args) {

???????Endpoint.publish("http://127.0.0.1:9001/webservice",new?TestWebServiceImpl() );

out.println(发布成功........");

}

?

b.???????调用该主函数进行发布

?

2,??使用WS Explorer调用这个WebService

a.?打开myeclips菜单栏中的window-à参数(preferenece)---à搜索(tcp)--à点击tcp/ip monitor---à编辑(edit)

-----à填写?本地监听端口号(location monitoring port:),即在访问时使用的端口号,9005,?主机号(localhost:?填写本地主机即可),?端口号:?填写需要代理的端口号::9000,?协议,选择TCP/IP -à启动(start)-àok

b.点击菜单栏中?soap Web service Explorer --à输入url地址(及访问地址,?:?http://127.0.0.1:9004/webservice?wsdl)?点击方法名---à点击add添加参数?---à点击go

3,配置TCP/IP Monitor监控发送的数据。

a?点击window中的显示视图项(show view)--àother--搜索添加的监视器(TCP/IP MONITOR).

?

4,使用wsimport+生成的类调用这个WebService.

a.???????使用命令wsimport进行生成java类中的代码,?首先查看环境是否正确(即该命令是否能直接访问)?à如果不可以在环境中配置----àdos控制台输入: wsimport,?查看输入方式:?:

wsimport??-s . -p cn.web.clientTest?http://127.0.0.1:9000/webservice?wsdl?---à此时会出现,解析wsdl,

生成代码,等英文-à完成

-s:表示目录??.点表示当前目录,-p :?表示包名,?最后为访问地址

?

?

b.???????将生成的代码放入工程中,?写一个类?,通过主函数调用过程:

public?class?LocalHostTest {

???static?void?main(String[] args) {

??????String str =?new?TestWebService().getTestWebServiceInstance().sayHello("本地主机号实验!");

??????System.out.println(str);

???}

}

A.??????调用主函数执行,或者在浏览器中直接访问地址也可以.在浏览器中会出现xml格式的文档,该文档中主要描述的时测试类的信息,:?类名,方法,参数,返回值等.

?

操作过程中出现的异常:?常见的有绑定异常:?主要是端口被占用,?关闭服务从新部署即可

webService?中常用的注解:

???????@WebService

标注要暴露为Web Services的类或接口?用于修饰类或接口包含的属性有

targetNamespace属性

定义命名空间默认为”http://”+”包名倒排

name属性

Web Service?的名称默认为类名。

wsdlLocation属性

描述服务的预定义?WSDL?的位置?

endpointInterface属性

定义服务抽象?Web Service?协定的服务端点接口的完整名称

?

@webmethod:

action属性

操作的活动

operationName属性

与此方法匹配的?wsdl:operation?的名称

exclude属性

标注此方法是否被暴露默认为false

如果所有方法上都没有指定@WebMethod则默认是所有的方法都是对外暴露的方法。如果有任一方法指定了@WebMethod,则只有指定这个注解的才是对外暴露的方法。

@webresult:

@WebResult?定义返回值,返回值类型不能为接口类或抽象类,而且必须有个不带参的构造函数,包含属性

?

返回值的名称

partName属性

表示此返回值的?wsdl:part?的名称

targetNamespace属性

返回值的?XML?名称空间

header属性

如果为?true,则结果是从消息头而不是消息正文获取的

@webparm

@WebParam?定义方法的参数,参数类型不能为接口类或抽象类,而且必须有个不带参的构造函数,包含属性

参数名称

表示此参数的?wsdl:part?的名称

参数的?XML?名称空间

mode属性

参数的流向(INOUT??INOUT?之一)

@SoapBinding:

@SOAPBinding?定义Web Service?SOAP中的消息协议,用于申修饰类或接口,包含的属性有:

style属性:

定义消息的编码类型,有两种类型的soap通信风格:DocumentRPC

Document

坚持定义良好的契约,典型通过xml schema创建,schema指定了消息的格式对于获得更好的可交互性的ws来说Document literal是首选。

RPC(Remote Prcedure call)

表示SOAP消息的body包含方法的xml表示,为了()序列化方法参数,SOAP规范定义了一系列编码规则。RPC主要用于传统的同SOAP encoding规则的协同,组合是指RPC/encoded。不过也可以有RPC/literal通信风格(不需要有任何编码格式),但依然限制RPC基于方法的通信,此种情况下文档无法进行检验因为没有schema定义。RPC风格的ws有很多交互问题。

use属性

定义消息的格式化类型。(通信风格)作为SOAP绑定定义在wsdl文档中。SOAP绑定可以是encoded用法和literal用法:encoding指消息会以某些格式进行编码。literal指纯文本,没有任何逻辑编码。

WSDL:

全称是Web Services Description LanguageWeb服务描述语言),是一种基于XML格式的、关于Web服务的描述语言。

???????主要描述的时web服务与通信之间的xml语言,提供了web服务的相关内容,?:?提供的借口,?方法名,参数类型,'Microsoft Yahei'; font-size:14px; line-height:22px"> SOAP:

全称是Simple Object Application Propotol简单对象访问协议),是一种轻量的、简单的、基于?XML?的协议。他是一种标准化的传输消息的XML消息格式,是WebService的标准通信协议。

UDDI:

全称是Universal Description,Discovery and Integration(可译为统一描述、发现和集成协议通用描述、发现与集成服务)。UDDI是一种目录服务,企业可以使用它对Web Services进行注册和搜索。???UDDI是一个分布式的互联网服务注册机制,它集描述(Universal Description)、检索(Discovery)与集成(Integration)为一体,其核心是注册机制。

?

?

使用CXF发布webservice

1.导入jar

2.写一个实现类

3.发布信息

例如:

1.实现类

"orderservice",255); font-size:10pt">"orderServiceImpl")

class?OrderServiceImpl?implements?OrderService{

@WebMethod

public?String findAll("name")String name) {

.......");

调用成功"+name;

????}

?

2/发布信息

class?CXFServiceTest {

???????JaxWsServerFactoryBean factory =?new?JaxWsServerFactoryBean();

???????factory.setAddress("http://127.0.0.1:9006/Service");//发布地址

???????factory.setServiceBean(new?OrderServiceImpl());//发布的实现类

???????factory.create();发布信息

.....");

}

使用CXFwsdl2java生成客户端代码并调用

wsdl2java -d . -p cn.itcast.ws?http://127.0.0.1/ws2?wsdl

使用普通类发布webservice

class?OrderServiceImpl2?public?String findAll(String name) {

2.发布信息

???????ServerFactoryBean factory =?new?ServerFactoryBean();

"http://127.0.0.1:9006/OrderService");//发布地址

new?OrderServiceImpl2());//发布的实现类

不使用注解方式发布webservice");

HTTPClinet:

?

class??CxfRSClient{

@Test

void?testGet()?throws?Exception{

???????HttpUriRequest request =?new?HttpGet("http://127.0.0.1/product/32sdfj");

???????HttpClient client =?new?DefaultHttpClient();

???????HttpResponse response = client.execute(request);

???????InputStream??in = response.getEntity().getContent();

???????BufferedReader reader =?new?BufferedReader(new?InputStreamReader(in,"UTF-8"));

if(response.getEntity()!=null){

???????????String line;

???????????while((line=reader.readLine())!= ???????????System.out.println(line);

???????????}

???????}

//发布信息

public?class??CxfRSTest{

????static?void?main(String[] args) {

????????JAXRSServerFactoryBean factory =?new?JAXRSServerFactoryBean();

????????factory.setAddress("http://127.0.0.1");

????????factory.setServiceBean(new?ProductServiceImpl());

????????factory.create();?//?发布服务

????????System.out.println("RSservice --发布成功........");

????}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读