热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

eclipse+axis2+tomcat进行web部署

我用的是eclipseindigorelease2、axis21.6.2、tomcat6.0。jdk已经安装并成功配置。第一步:下载eclipseindigorelease2,下载地址:h

我用的是eclipse indigo release2、axis2 1.6.2、 tomcat6.0。

jdk已经安装并成功配置。

第一步:下载eclipse indigo release2,下载地址:http://mirrors.ustc.edu.cn/eclipse/technology/epp/downloads/release/indigo/SR2/eclipse-jee-indigo-SR2-win32.zip

解压后直接可用。

第二步:下载并安装tomcat插件

http://www.fayea.com/apache-mirror/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.zip

eclipse tomcat插件:http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV33.zip

解压tomcatPluginV33.zip,将解压后的文件放到eclipse/plugins内,重启eclipse,可看见tomcat图标,在window/perference 下,

选择tomcat,tomcat version里选择version 6.x,tomcat home 中选择tomcat 的安装目录。按tomcat启动图标

在浏览器里输入http://localhost:8080/,可以看见官网。说明已经成功了。

第二步:下载axis2,

http://apache.etoak.com//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip

http://apache.etoak.com//axis/axis2/java/core/1.6.2/axis2-1.6.2-war.zip

axis2-1.6.2-bin.zip解压到电脑中的任意目录,

axis2-1.6.2-war.zip解压后,放到tomcat的webapps目录下,重启tomcat,会发现webapps目录下多了axis2文件夹,

在浏览器里输入http://localhost:8080/axis2,会发现对应的网页,说明已经成功了。

 在eclipse中进行配置,会出现Axis2 runtime loaded successfully,说明加载成功了。
再下载两个插件:http://apache.etoak.com/axis/axis2/java/core/1.6.2/axis2-eclipse-codegen-plugin-1.6.2.zip http://mirror.bit.edu.cn/apache/axis/axis2/java/core/1.6.2/axis2-eclipse-service-plugin-1.6.2.zip 解压后都放到eclipse的plugins目录下,在eclipse中,file-->new.-->others..里面会出现axis2 wizards这样,axis2 配置完成了,可以进行web service开发了。。。
一、建立要发布的Web Service

1.1 解压所下载的axis2-1.6.0-bin.zip,在Eclipse中的Windows\Preferences下new一个User Libraries,命名为axis2,将解压后文件夹中 axis2-1.6.0\lib 下的包均添加进来。这一步操作的目的是为了以后工程方便添加axis2所需的 jar文件。


1.2 建立一个JavaProject,命名为sayHello,将axis2用户库加入到build path中
1.3 现在开始编写要发布的WebService,在src包中建包Hi,建立Hello类如下:

Java代码 package Hi;publicclass Hello { public String sayHello(String user) { return"Hello, "+ user; }}

 此时sayHello工程结构如下:



二、发布Web Service


2.1 编译刚刚建立的Hello类,类编译后,会在workspace中对应工程目录下的bin文件夹下生成Hello.class文件
2.2 打包要发布的Service, 点击Eclipse中New ——> File ——> Other ——> Axis2 wizards ——> Axis2 Services Archiver,按照向导选择刚建立的类编译后的class文件。
注意点:
1、在我的工程中,workspace是E:\J2EE,选择class目录,本工程中class Hello是带包Hi的,因此我们不能选成E:\J2EE\sayHello\bin\Hi,而应该选择E:\J2EE\WSTest\bin,如图所示:



2、next后,默认选择Skip WSDL

3、继续next,这两步默认,什么都不选

4、设定服务名称和所使用的类名,点击Load如下所示:


注意Class name请务必设为Hi.Hello,代表使用的类是E:\J2EE\sayHello\bin路径下,文件夹Hi下的Hello类,否则Load不上的。

5 设置输出路径为: \webapps\axis2\WEB-INF\services


6 点击Finish完成发布。

 

 

三、测试所发布的Web Service

打开http://localhost:8080/axis2/services/listServices页面,可以看到sayHello服务:


点击进到sayHello的wsdl页面:http://localhost:8080/axis2/services/sayHello?wsdl,表明服务部署正确。

四、编写客户端代码调用WebService
本文例子与其他例子最大的不同就在这里,其他例子一般需要根据刚才的服务wsdl生成客户端stub,然后通过stub来调用服务,这种方式显得比较单一,客户端必须需要stub存根才能够访问服务,很不方面。本例子的客户端不采用stub方式,而是一种实现通用的调用方式,不需要任何客户端存根即可访问服务。只需要指定对于的web servce地址、操作名、参数和函数返回类型即可。工程结构如下:

package Hi;

import javax.xml.namespace.QName;

import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;

import org.apache.axis2.rpc.client.RPCServiceClient;

public class MyClient {

 private RPCServiceClient serviceClient ;
 private Options options;
 private EndpointReference targetEPR;
 public MyClient(String endPoint)throws AxisFault{
  //使用RPC方式调用webService
  serviceClient = new RPCServiceClient ();
  //
  optiOns= serviceClient.getOptions();
  //制定调用webservice的URL
  targetEPR = new EndpointReference(endPoint);
  //
  options.setTo(targetEPR);
 }
 public Object[] invokeOP(String targetNameSpace, String opName,
   Object[] opArgs, Class[] opReturnType )throws AxisFault,ClassNotFoundException{
  //制定要调用的example方法和wsdl文件的命名空间
  QName opQName = new QName(targetNameSpace, opName);
  //指定example方法并输出该方法的返回值
  //参数:调用的方法名,调用的参数名,调用方法的返回类型
  return serviceClient.invokeBlocking(opQName, opArgs, opReturnType);
 }
 public static void main(String args[])throws AxisFault,ClassNotFoundException{
  final String endPointReference = "http://localhost:8080/axis2/services/sayHello";
  final String targetNameSpace = "http://Hi";
  MyClient client = new MyClient (endPointReference);
  String opName = "sayHello";
  //指定example方法的参数值
  Object[] opArgs = new Object[]{"My Friends"};
  //指定example方法返回数据值的数据类型的Class对象
  Class[] opReturnType = new Class[] {String[].class};
  
  Object[] respOnse= client.invokeOP(targetNameSpace, opName, opArgs, opReturnType);
  System.out.println("result--->" + ((String[])response[0])[0]);
 }
}
运行该程序,点击Run As->Java application,可以看到控制台端口的输出是:result--->Hello, My Friends,表明客户端调用成功。


推荐阅读
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • Java测试服务器调试指南详细介绍了如何进行远程调试,并深入解析了Java Xdebug参数的使用方法。本文首先概述了Java内置的调试功能,重点介绍了JDB这一类似于GDB的强大调试工具。通过实例演示,读者可以掌握在测试环境中高效调试Java应用程序的技巧,包括配置远程调试环境和优化调试参数,以提高开发效率和代码质量。 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 基于Web的Kafka管理工具Kafkamanager首次访问Web界面的详细配置指南(附图解)
    首次访问Kafkamanager Web界面时,需要对Kafka集群进行配置。这一过程相对简单,用户只需依次点击【Cluster】>【Add Cluster】,按照提示完成相关设置即可。本文将通过图文并茂的方式,详细介绍每一步的配置步骤,帮助用户快速上手Kafkamanager。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • Windows环境下RabbitMQ安装详尽指南
    Windows环境下RabbitMQ安装详尽指南 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 在处理大图片时,PHP 常常会遇到内存溢出的问题。为了避免这种情况,建议避免使用 `setImageBitmap`、`setImageResource` 或 `BitmapFactory.decodeResource` 等方法直接加载大图。这些函数在处理大图片时会消耗大量内存,导致应用崩溃。推荐采用分块处理、图像压缩和缓存机制等策略,以优化内存使用并提高处理效率。此外,可以考虑使用第三方库如 ImageMagick 或 GD 库来处理大图片,这些库提供了更高效的内存管理和图像处理功能。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
author-avatar
啲眼泪17
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有