这里介绍一种可以直接发布Webservice的方式,只需要在WEB-INF下添加server-config.wsdd文件即可。其实axis1生成deploy.wsdd和undeploy.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
相关推荐
本项目是一个关于如何使用Axis1发布Web服务的示例,包含了必要的jar包和其他文件,可以直接运行。 首先,我们需要了解Web服务的基本概念。Web服务是一种基于互联网协议的软件,能够通过XML(eXtensible Markup ...
1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web服务接口。这个类通常会遵循SOAP协议,定义服务操作。例如,你可以创建一个名为`HelloWorldService`的类,包含一个`sayHello`...
Java Axis 直接调用webservice 接口工具类, 无需根据wsdl编译客户端,需要axis相关包,测试使用axis 1.4, 附demo引入axis包后直接可以测试;
### Axis2 下发布 WebService 方法详解 #### 一、WebService 概述 WebService 是一种用于在不同系统之间进行通信的技术,它可以将一个类中的某些方法公开出去,供网络上的任何客户端进行调用。WebService 主要基于...
【标题】中的“基于axis2实现的webservice简单实现(客户端+服务端)”表明了本文将探讨如何使用Apache Axis2框架来创建和消费Web服务。Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的...
描述中提到的“简单例子:axis2整合spring发布webservice”,意味着我们将学习如何将这两个框架结合,以便通过Spring来管理和控制Web服务的生命周期,同时利用Axis2的Web服务处理能力。此外,“以及session的管理”...
4. `AxisWebService` - 这可能是包含示例Web服务源代码的文件夹,或者是一个已经打包好的Web服务项目,用户可以参考或直接运行以了解Axis发布Web服务的实际操作。 通过这个教程,学习者将能理解如何使用Axis创建...
标题中的“axis发布webservice的步骤”涉及到的是在Java环境中使用Apache Axis库创建并部署Web服务的过程。Apache Axis是开源的Web服务工具包,它允许开发者通过简单的API将Java类暴露为Web服务,或者调用远程Web...
在 Axis2 中,不需要进行任何的配置,就可以直接将一个简单的 POJO 发布成 WebService。其中 POJO 中所有的 public 方法将被发布成 WebService 方法。 例如,下面是一个简单的 POJO 例子: ```java public class ...
描述了axis2如何调用webservice,jar齐全,首先保证webservice的url能正常访问,下载资源后直接运 行com.axis2.test.TestAxis2的main方法即可。 axis2功能十分强大,可接受方法中返回任何类型,比如List, Set,...
1. **分析依赖**: 查看项目的构建日志或使用工具(如Maven或Gradle的依赖树插件)分析哪些jar包是直接或间接被使用的。 2. **排除冗余**: 删除未使用的jar包,特别是那些第三方库的全集,只保留特定版本。 3. **...
AXIS支持WSDL第一类公民,意味着可以直接从WSDL文件生成客户端和服务端代码。 ### 3. 建立开发环境 **3.1 基本环境** 首先,你需要安装Java Development Kit (JDK)和Apache Tomcat服务器,这两个是开发AXIS ...
Axis2调用SAP Webservice源码 使用Axis2 org.apache.axis2.eclipse.codegen.plugin_1.6.2.jar插件生成本地Java Proxy同事生成同步和异步调用测试用例 更重要的是配备详细文档,实乃Java与SAP集成是宝典!
axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例
资源包含了:axis2-1.7.4-bin.zip、axis2-1.7.4-war.zip、axis2-eclipse-...备注:资源超过了70M 分成了2部分 见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集成开发环境中使用Apache Axis2框架创建并发布Web服务的教程。Apache Axis2是用于构建Web服务和Web服务客户端的高性能、灵活且可扩展的开源框架。以下是...
**步骤5:发布和测试WebService** 1. 启动Tomcat服务器,服务会自动部署并可供访问。 2. 使用AXIS2提供的WSDL URL(通常是http://localhost:8080/axis2/services/HelloWorldService?wsdl)来查看服务定义。 3. 创建...
而Axis作为SOAP引擎,负责处理这些消息并实现服务的发布与调用。 接下来,我们进入具体步骤: 1. **环境准备**:确保你已经安装了Java开发环境(JDK)和Apache Axis工具。可以从Apache官方网站下载最新版本的Axis...
java axis客户端调用webservice,可应用于ofbiz框架。 解决网络上共享代码两次调用后会出现timeout的BUG