Java发布webservice

我会带着你远行 2022-12-31 05:26 203阅读 0赞

先附上一个webservice的视频教程:

链接:https://pan.baidu.com/s/1qesv_A7cp-zYsL7fE5nmFw
提取码:3d6k

创建服务端(提供接口):

方式一:创建一个web工程20190220115817436.png,创建一个ServiceHello类,如下:

  1. package com.test;
  2. import javax.jws.WebService;
  3. import javax.xml.ws.Endpoint;
  4. @WebService
  5. public class ServiceHello {
  6. public String sayHello(String name){
  7. System.out.println("---BB---------ServiceHello--------------");
  8. return "欢迎你! "+name;
  9. }
  10. public static void main(String[] args) {
  11. Endpoint.publish("http://127.0.0.1:8080/BB/ServiceHello", new ServiceHello());
  12. System.out.println("发布成功!");
  13. }
  14. }

创建webservice接口比较简单,在类上面加上@WebService注解,提供一个接口方法如sayHello,最后在main方法去发布接口。控制台打印出“发布成功”后,把main方法中的那个地址加上?wsdl复制到浏览器中,可以查看到这个wsdl文件。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70

但是这种方式是main方法运行的,一关闭就访问不到,一般都是通过tomcat发布的,所以这种方式只了解下。

方式二:创建一个web工程20190220115817436.png,创建一个ServiceHello类,类和上面相同,可以去掉main方法。

选中这个类右键,new一个web service,如下图:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 1

点击next:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 2

点击next,下图中选择提供接口的方法,因为这个类main方法我没去掉,所以显示两个方法,但是不选择main方法就行,点击finish完成。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 3

会自动在项目下生产以下文件:

20190220143942646.png

项目用tomcat启动,打开ServiceHello.wsdl文件,下面这个地址是接口地址,后面加?wsdl在浏览器中可以访问到。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 4

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 5 这种方式只是简单web项目,运行tomcat提供接口。视频中有基于Spring的WebService教程。

方式三: 对方提供一个wsdl文件,根据这个文件去生成服务端来提供服务。

创建一个web项目,把wsdl文件放在webcontent目录下:

20190220145252721.png

选择src或者项目右键,去new一个web service:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 6

在“web service type”选择下面选项,然后点击Browser:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 7

然后在新的弹出框中选择browser,去现在这个项目下的wsdl文件,点击OK:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 8

点击OK:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 9

点击finish:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 10

会在项目下自动生成一些类,依赖jar包等文件,会生成新的wsdl文件,原先的wsdl文件就可以删除掉,项目通过tomcat启动即可访问到接口,访问和方式二的访问相同。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 11

注意:这种方式有些是需要接口方法里面的逻辑的,把接口方法自己补充完整。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 12

创建客户端(调用接口):

方式一:通过提供的接口地址去生成客户端。我们用上面的http://localhost:8082/BB/services/ServiceHello?wsdl这个接口地址。

创建一个web项目:

20190220151003221.png

选择项目右键去new一个web service client:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 13

把接口地址填入service definition,这个地址一定是能访问得到的,不然会提示“The service definition selected is invalid.”,点击finish:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 14

会自动生成一些接口文件。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 15

生成之后去创建一个测试接口的类:

  1. package com.test;
  2. public class Test {
  3. public static void main(String[] args) throws Exception {
  4. ServiceHelloServiceLocator l =new ServiceHelloServiceLocator();
  5. ServiceHello service = l.getServiceHello();
  6. String s = service.getValue("test");
  7. System.out.println(s);
  8. }
  9. }

    运行main方法,打印返回数据,测试成功:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 16

方式二:通过给的wsdl生成客户端,来调用接口 。

创建一个web项目,把wsdl文件放在webcontent目录下,右键项目去new一个web service client:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 17

点击browser去选择本项目下的wsdl文件,操作和根据wsdl创建服务端的操作相同。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 18

点击finish,完成:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 19

生成接口的类和依赖jar包:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 20

这种方式需要注意一点,就是拿到的wsdl文件,文件最下面有接口地址:

20190220153959244.png 需要注意这个接口地址是不是可以访问的地址,或者是正式的接口地址,有时候是一个假的地址,访问不到,如下图:

20190220154148467.png

这样生成的接口类,去测试是访问不到的,这时候去给对方要正式的接口地址,一般是在带有locator的这个类去改一下接口地址即可:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F0b25nbXUyMDE3_size_16_color_FFFFFF_t_70 21

发表评论

表情:
评论列表 (有 0 条评论,203人围观)

还没有评论,来说两句吧...

相关阅读