`
zhuchengzzcc
  • 浏览: 442909 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Axis1直接发布Webservice

 
阅读更多

      这里介绍一种可以直接发布Webservice的方式,只需要在WEB-INF下添加server-config.wsdd文件即可。其实axis1生成deploy.wsddundeploy.wsdd文件的本质是为了生成server-config.wsdd

 

      下面为示例,项目目录结构,采用maven构建。

     

 

编写服务器端代码:


 

package server;

import javax.servlet.http.HttpServletRequest;

import org.apache.axis.MessageContext;
import org.apache.axis.transport.http.HTTPConstants;

/**
 * @author		zhuc
 * @create		2013-2-28 上午9:34:29
 */
public class HelloService {

	/**
	 * @param name
	 * @return
	 */
	public String sayHello(String name) {
		MessageContext mc = MessageContext.getCurrentContext();
		HttpServletRequest request = (HttpServletRequest) mc.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
		System.out.println(request.getRemoteHost());

		System.out.println("服务器端收到:" + name);
		return "你好:" + name;
	}
}

 

在WEB-INF下添加文件server-config.wsdd:

 

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
	xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

	<handler name="LocalResponder"
		type="java:org.apache.axis.transport.local.LocalResponder" />
	<handler name="Authenticate"
		type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" />
	<handler name="URLMapper"
		type="java:org.apache.axis.handlers.http.URLMapper" />
	
	<service name="HelloService" type="" provider="java:RPC" style="rpc"
		use="encoded">
		<parameter name="scope" value="Request" />
		<parameter name="className"
			value="server.HelloService" />
		<parameter name="allowedMethods" value="*" />
	</service>

	
	<transport name="local">
		<responseFlow>
			<handler type="LocalResponder" />
		</responseFlow>
	</transport>
	<transport name="http">
		<requestFlow>
			<handler type="URLMapper" />
			<handler
				type="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
		</requestFlow>
	</transport>
</deployment>

 

web.xml内容为:

 

<!DOCTYPE web-app PUBLIC
	 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
	 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
	<display-name>Archetype Created Web Application</display-name>
  
	<servlet>
		<display-name>Apache-Axis Servlet</display-name>
		<servlet-name>AxisServlet</servlet-name>
		<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>/servlet/AxisServlet</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>*.jws</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>
	<servlet>
		<display-name>Axis Admin Servlet</display-name>
		<servlet-name>AdminServlet</servlet-name>
		<servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
		<load-on-startup>100</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>AdminServlet</servlet-name>
		<url-pattern>/servlet/AdminServlet</url-pattern>
	</servlet-mapping>
</web-app>

 

这会我们的发布工作已经完成,启动Jetty查看

 



 

发布成功!

 

我们客户端访问来实验下:

 

package client;

import javax.xml.rpc.ParameterMode;

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

/**
 * @author		zhuc
 * @create		2013-2-28 上午9:41:52
 */
public class Test1 {

	/**
	 * 访问webservices地址
	 */
	private String endpointURL;

	/**
	 * 调用webservices 服务的方法
	 */
	private String serviceMethod;

	/**
	 * 传递webservices 参数
	 */
	private Object[] paraMets;

	/**
	 * @return the endpointURL
	 */
	public String getEndpointURL() {
		return endpointURL;
	}

	/**
	 * @return the serviceMethod
	 */
	public String getServiceMethod() {
		return serviceMethod;
	}

	/**
	 * @return the paraMets
	 */
	public Object[] getParaMets() {
		return paraMets;
	}

	/**
	 * @param endpointURL the endpointURL to set
	 */
	public void setEndpointURL(String endpointURL) {
		this.endpointURL = endpointURL;
	}

	/**
	 * @param serviceMethod the serviceMethod to set
	 */
	public void setServiceMethod(String serviceMethod) {
		this.serviceMethod = serviceMethod;
	}

	/**
	 * @param paraMets the paraMets to set
	 */
	public void setParaMets(Object[] paraMets) {
		this.paraMets = paraMets;
	}

	/**
	 * @return
	 * @throws Exception
	 */
	public Object getRequestResult() throws Exception {
		Object object = null;
		Service service = new Service();
		Call call = null;
		call = (Call) service.createCall();
		call.setTargetEndpointAddress(new java.net.URL(endpointURL));
		call.setOperationName(serviceMethod);
		call.setReturnType(XMLType.XSD_STRING);
		call.addParameter(serviceMethod, XMLType.XSD_STRING, ParameterMode.IN);
		object = call.invoke(paraMets);
		return object;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Test1 au = new Test1();
		au.setEndpointURL("http://localhost:8080/axis1/services/HelloService?wsdl");
		au.setParaMets(new Object[] { "zhuc" });
		au.setServiceMethod("sayHello");
		try {
			Object object = au.getRequestResult();
			System.out.println(object);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

 

客户端输出:

你好:zhuc

 

服务器端输出:

127.0.0.1
服务器端收到:zhuc

  • 大小: 21.5 KB
  • 大小: 525.3 KB
分享到:
评论

相关推荐

    Axis1发布webservice服务

    本项目是一个关于如何使用Axis1发布Web服务的示例,包含了必要的jar包和其他文件,可以直接运行。 首先,我们需要了解Web服务的基本概念。Web服务是一种基于互联网协议的软件,能够通过XML(eXtensible Markup ...

    axis2发布webservice和调用axis2服务接口

    1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web服务接口。这个类通常会遵循SOAP协议,定义服务操作。例如,你可以创建一个名为`HelloWorldService`的类,包含一个`sayHello`...

    Java Axis 直接调用webservice 接口工具类

    Java Axis 直接调用webservice 接口工具类, 无需根据wsdl编译客户端,需要axis相关包,测试使用axis 1.4, 附demo引入axis包后直接可以测试;

    Axis2下发布WebService方法

    ### Axis2 下发布 WebService 方法详解 #### 一、WebService 概述 WebService 是一种用于在不同系统之间进行通信的技术,它可以将一个类中的某些方法公开出去,供网络上的任何客户端进行调用。WebService 主要基于...

    基于axis2实现的webservice简单实现(客户端+服务端)。

    【标题】中的“基于axis2实现的webservice简单实现(客户端+服务端)”表明了本文将探讨如何使用Apache Axis2框架来创建和消费Web服务。Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的...

    axis2+spring webservice

    描述中提到的“简单例子:axis2整合spring发布webservice”,意味着我们将学习如何将这两个框架结合,以便通过Spring来管理和控制Web服务的生命周期,同时利用Axis2的Web服务处理能力。此外,“以及session的管理”...

    axis发布webservice教程源代码

    4. `AxisWebService` - 这可能是包含示例Web服务源代码的文件夹,或者是一个已经打包好的Web服务项目,用户可以参考或直接运行以了解Axis发布Web服务的实际操作。 通过这个教程,学习者将能理解如何使用Axis创建...

    axis 发布webservice的步骤

    标题中的“axis发布webservice的步骤”涉及到的是在Java环境中使用Apache Axis库创建并部署Web服务的过程。Apache Axis是开源的Web服务工具包,它允许开发者通过简单的API将Java类暴露为Web服务,或者调用远程Web...

    axis2发布webservice

    在 Axis2 中,不需要进行任何的配置,就可以直接将一个简单的 POJO 发布成 WebService。其中 POJO 中所有的 public 方法将被发布成 WebService 方法。 例如,下面是一个简单的 POJO 例子: ```java public class ...

    Axis2发布和调用webservice

    描述了axis2如何调用webservice,jar齐全,首先保证webservice的url能正常访问,下载资源后直接运 行com.axis2.test.TestAxis2的main方法即可。 axis2功能十分强大,可接受方法中返回任何类型,比如List, Set,...

    axis2客户端调用webService接口,精简jar包

    1. **分析依赖**: 查看项目的构建日志或使用工具(如Maven或Gradle的依赖树插件)分析哪些jar包是直接或间接被使用的。 2. **排除冗余**: 删除未使用的jar包,特别是那些第三方库的全集,只保留特定版本。 3. **...

    AXIS入门指南-webservice

    AXIS支持WSDL第一类公民,意味着可以直接从WSDL文件生成客户端和服务端代码。 ### 3. 建立开发环境 **3.1 基本环境** 首先,你需要安装Java Development Kit (JDK)和Apache Tomcat服务器,这两个是开发AXIS ...

    Axis2调用SAP Webservice源码

    Axis2调用SAP Webservice源码 使用Axis2 org.apache.axis2.eclipse.codegen.plugin_1.6.2.jar插件生成本地Java Proxy同事生成同步和异步调用测试用例 更重要的是配备详细文档,实乃Java与SAP集成是宝典!

    Spring集成axis2实现webservice所用到的包

    1. **配置Axis2**:在Spring项目中,首先需要将Axis2的相关库添加到项目的类路径下。这些库通常包括`axis2-*.jar`, `axiom-*.jar`, `neethi-*.jar`, `wsdl4j-*.jar`, `commons-discovery-*.jar`, `commons-logging-*...

    axis2例子 webservice axis2 示例

    axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例

    axis2方式开发webservice

    资源包含了:axis2-1.7.4-bin.zip、axis2-1.7.4-war.zip、axis2-eclipse-...备注:资源超过了70M 分成了2部分 见axis2方式开发webservice(一)和 axis2方式开发webservice(二)、 axis2方式开发webservice(三)

    Axis2发布Webservice教程+工具(改良版)

    axis2-1.4.1-war.zip axis2-eclipse-codegen-wizard-1.4.zip axis2-eclipse-service-archiver-wizard-1.4.zip axis2创建webservice.txt(教程链接)

    Eclipse + Axis2发布WebService

    【Eclipse + Axis2 发布 WebService】是一个关于在Eclipse集成开发环境中使用Apache Axis2框架创建并发布Web服务的教程。Apache Axis2是用于构建Web服务和Web服务客户端的高性能、灵活且可扩展的开源框架。以下是...

    AXIS2远程调用WebService示例(Eclipse+AXIS2)工具和所用包.rar

    **步骤5:发布和测试WebService** 1. 启动Tomcat服务器,服务会自动部署并可供访问。 2. 使用AXIS2提供的WSDL URL(通常是http://localhost:8080/axis2/services/HelloWorldService?wsdl)来查看服务定义。 3. 创建...

    利用Axis编写简单的WebService

    而Axis作为SOAP引擎,负责处理这些消息并实现服务的发布与调用。 接下来,我们进入具体步骤: 1. **环境准备**:确保你已经安装了Java开发环境(JDK)和Apache Axis工具。可以从Apache官方网站下载最新版本的Axis...

Global site tag (gtag.js) - Google Analytics