java中使用axis发布和调用webService

工作中需要调用webService服务,这里记录一下如何在java中发布和调用webService。

需要的jar包:

发布webService:

package com.xzh.webservice;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService
public class MyWebService {

    public String hello(String name) {
        System.out.println("hello:" + name);
        return "hello:" + name;
    }

    @WebMethod(exclude=true)
    public String hello2(String name){
        System.out.println("hello2:" + name);
        return "hello2: "+name;
    }  

    public static void main(String[] args) {
        /**
         * 参数1:服务的发布地址 参数2:服务的实现者
         */
        Endpoint.publish("http://localhost:8080/transcode", new MyWebService());
        System.out.println("webservice start success");
    }

}

访问webService:

package com.xzh.webservice;

import java.rmi.RemoteException;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;

public class MyWebClient {
    public static void main(String[] args) {
        try {
            // new 一个服务
            Service sv = new Service();
            // 创建一个call对象
            Call call = (Call) sv.createCall();
            // 设置要调用的接口地址
            call.setTargetEndpointAddress("http://localhost:8080/transcode");
            // 设置要调用的接口方法
            call.setOperationName(new QName("http://webservice.xzh.com/", "hello"));
            // 设置参数,在设定参数时,不使用服务端定义的参数名,而是arg0~argN来定义
            call.addParameter("arg0", XMLType.XSD_STRING, ParameterMode.IN);
            // 返回参数类型
            call.setReturnType(XMLType.XSD_STRING);

            Object result = call.invoke(new Object[]{"jason"});
            System.out.println(result);
        } catch (ServiceException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }
}

日志截图:

时间: 2024-10-09 16:39:58

java中使用axis发布和调用webService的相关文章

webService总结(四)——使用axis2发布和调用webService

准备工作 Axis2 官网 http://axis.apache.org/  下载axis2相关资料 其中 axis2-1.6.2-bin.zip文件中包含了Axis2中所有的jar文件, axis2-1.6.2-war.zip文件用于将WebService发布到Web容器中.最后两个是axis2在eclipse中的插件. 大概说说这几个文件如何使用. 1.解压axis2-1.6.2-bin.zip到任意目录.然后在eclipse中按下图配置. 2.将axis2-1.6.2-war.zip文件解

使用CXF发布和调用webservice之HelloWorld入门

依赖的JAR     cxf-2.2.10.jar     jetty-6.1.21.jar     jetty-util-6.1.21.jar     servlet-2_5-api.jar     wsdl4j-1.6.2.jar     XmlSchema-1.4.5.jar 创建一个普通的Java工程即可 创建webservice接口 package com.cxf.interfaces; import javax.jws.WebParam; import javax.jws.WebSe

Java工程使用axis的stub生成webservice客户端代码

Axis2提供了一个wsdl2java.bat命令可以根据WSDL文件自动产生调用WebService的代码. wsdl2java.bat命令可以在<Axis2安装目录>/bin目录中找到. 在使用wsdl2java.bat命令之前需要设置AXIS2_HOME环境变量,该变量值是<Axis2安装目录>.在Windows控制台输出如下的命令行来生成调用WebService的代码: %AXIS2_HOME%\bin\wsdl2java -uri [wsdl]  -p client -s

webService总结(一)——使用CXF发布和调用webService(不使用Spring)

CXF和Axis2是两个比较流行的webService框架,接下来我会写几篇博客简单介绍如何使用这两种框架.首先,先简单介绍一下CXF的使用. CXF发布webService有多种方法,这里我介绍三种: 1.不使用Spring,CXF自动发布webService 2.不使用Spring,CXF手动发布webService 3.使用Spring + CXF发布webService 这篇博客以实例介绍第一种方法--不使用Spring,CXF自动发布webService. 服务端: 目录结构如下: I

spring boot整合cxf发布和调用webservice

一.前言 说起web service最近几年restful大行其道,大有取代传统soap web service的趋势,但是一些特有或相对老旧的系统依然使用了传统的soap web service,例如银行.航空公司的机票查询接口等.本博客主要讲解得是spring boot整合cxf发布webservice服务和spring boot整合cxf客户端调用webservice服务本案例使用maven方式二.编码核心文件清单1.pom.xml <?xml version="1.0"

C++/Java中继承关系引发的调用关系详解

C++: 这里引用到了 http://blog.csdn.net/haoel/article/details/1948051/ 中的内容,还请提前阅读陈大神的这篇博客后在阅读本篇. 覆盖,实现多态的基础,通过虚函数表来实现,下面这个例子便是覆盖 Override 1 #include<iostream> 2 3 using namespace std; 4 5 class Base{ 6 public: 7 Base(){ 8 cout << "Base::Base&qu

java中方法定义与方法调用

再java中,定义一个方法,其参数可以申明为某某类型的参数. package com.wengde.bookshop.service; import com.wengde.bookshop1.dao.BookDAO; import com.wengde.bookshop1.domin.Book; import com.wengde.bookshop1.impl.BookDAOImpl; import com.wengde.bookshop1.web.CriteriaBook; import co

关于Java中基类构造器的调用问题

在<Java编程思想>第7章复用类中有这样一段话,值得深思.当子类继承了父类时,就涉及到了基类和导出类(子类)这两个类.从外部来看,导出类就像是一个与基类具有相同接口的新类,或许还会有一些额外的方法和域.但继承并不只是复制基类的接口.当创建一个导出类对象时,该对象包含了一个基类的子对象,这个子对象与你用基类直接创建的对象是一样的,二者区别在于,后者来自于外部,而基类的子对象是被包裹在导出类对象内部. 这就引发出了一个很重要的问题,对基类子对象的正确初始化也是至关重要的(我们可能在子类的使用基类

实例详解Java中如何对方法进行调用

原文源自http://www.jb51.net/article/73827.htm 方法调用Java支持两种调用方法的方式,根据方法是否返回值来选择. 当程序调用一个方法时,程序的控制权交给了被调用的方法.当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序. 当方法返回一个值的时候,方法调用通常被当做一个值.例如: int larger = max(30, 40); 如果方法返回值是void,方法调用一定是一条语句.例如,方法println返回void.下面的调用是个语句: Sy