• JAVA调用WebService实例


    WebService是提供特定服务的架构技术,通过标准的Web协议提供服务,其目的是保证不同平台的应用服务可以相互操作。目前比较流行的实现是使用.NETJAVA两种语言技术,并且两种实现语言可以相互操作;

    下面主要围绕通过JAVA语言来介绍Webservice定义和调用,通过JAVA语言开发WebService的方式又分为Axis、axis2、XfireCXF以及JWS。每种方式实现都有各自的特点,由于本人使用CXF方式比较熟练,而且,CFXSpring无缝结合,所以下面重点介绍以CXF方式的实现。

    由于WebService实现分为服务端和客户端两种开发模式,接下来介绍WebService服务端开发、客户端开发及实例测试。

    1. 环境准备

    JDK1.6以上,需要的JAR文件有:commons-logging-1.1.1.jar、cxf-2.4.3.jar、neethi-3.0.1.jar、spring-aop-3.0.5.RELEASE.jar、spring-asm-3.0.5.RELEASE.jar、spring-beans-3.0.5.RELEASE.jar、spring-context-3.0.5.RELEASE.jar、spring-context-support-3.0.5.RELEASE.jar、spring-core-3.0.5.RELEASE.jar、spring-expression-3.0.5.RELEASE.jar、spring-web-3.0.5.RELEASE.jar、wsdl4j-1.6.2.jar、xmlschema-core-2.0.1.jar。

     

    1.服务端开发

    自定义接口类

     package cn.test.ws.service;

     import javax.jws.WebParam;

     import javax.jws.WebService;

     @WebService

    public interface GreetingService {

       public String welcome(@WebParam(name="username") String username);

       public int getNum(@WebParam(name="number") int number);

     }

     定义接口实现类

     

    package cn.test.ws.service.impl;

     import cn.test.ws.service.GreetingService;

    public class GreetingServiceImpl implements GreetingService {

     @Override

    public String welcome(String username) {

      System.out.println("服务端的方法为:greeting()");

      return "Hell0 "+username+",欢迎你调用JAVA下的WebService服务!";

    }

     @Override

    public int getNum(int number) {

      System.out.println("服务端的方法为:getNum()");

      return number;

    }

    }

     

    Spring.xml配置

     

    <?xml version="1.0" encoding="UTF-8"?>

    <beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

    xmlns:jaxws="http://cxf.apache.org/jaxws"

    xsi:schemaLocation="

     http://www.springframework.org/schema/beans

     http://www.springframework.org/schema/beans/spring-beans.xsd

     http://cxf.apache.org/jaxws

     http://cxf.apache.org/schemas/jaxws.xsd">

    <import resource="classpath:META-INF/cxf/cxf.xml" />

    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

    <jaxws:server id="GreetingService"

    serviceClass="cn.test.ws.service.GreetingService"

    address="/GreetingService">

    <jaxws:serviceBean>

    <bean class="cn.test.ws.service.impl.GreetingServiceImpl" />

    </jaxws:serviceBean>

    <jaxws:features>

    <bean class="org.apache.cxf.feature.LoggingFeature" />

    </jaxws:features>

    </jaxws:server>

    </beans>

     

    2. web.xml配置

     

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
      </context-param>
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      <servlet>
        <display-name>CXF Servlet</display-name>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/*</url-pattern>
      </servlet-mapping>

     

     

    3.客户端开发

     public static void main(String[] args) {

    JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();

     String wsUrl = "http://127.0.0.1:8080/WS/GreetingService?wsdl";

    String method ="welcome";

    String method2 =  "getNum";

     try {

      Client client = dcf.createClient(wsUrl);

      Object[] objects =client.invoke(method,"TEST");

      Object[] numbers =client.invoke(method2,6);

      System.out.println(objects[0].toString());

      System.out.println(numbers[0]);

    } catch (Exception e) {

      e.printStackTrace();

    }

     }

     

    4.实例测试

    WebService测试可以使用上述客户端main方法进行测试,也可通过在浏览器中进行测试,还有专门的webservice测试工具等众多方式进行测试。

    在浏览器中输入http://IP:端口/项目名称/GreetingService?wsdl即可看到已发布的服务端信息,并且通过输入制定参数显示服务端返回的信息,如:http://IP:端口/项目名称/GreetingService/welcome?username=test。

  • 相关阅读:
    随机生成30到四则运算题目2 (修改)
    随机生成30到四则运算题目2
    随机生成30道四则运算题目
    第一周学习进度表
    构建之法阅读笔记01
    个人简介
    个人简介
    bat 延时删除指定文件夹中的文件经验分享
    centos 7 (操作应用)-关闭防火墙
    mysql数据库迁移
  • 原文地址:https://www.cnblogs.com/weinan2087/p/5462520.html
Copyright © 2020-2023  润新知