微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webservice部署和发布

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监控发送的数据。

点击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

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

参数名称

表示此参数的 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 --发布成功........");

    }

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐