用axis2+Tomcat5.5+MyEclipse7.5部署和访问Web服务
- 格式:docx
- 大小:1.43 MB
- 文档页数:15
如何将基于Axis2的Web Service集成到自己的webapp本文主要描述如何使用Apache开源项目Axis提供的API来实现Web Services并集成到我们的应用程序当中。
本文的读者应有JAVA web 应用开发基础。
应该具有看过WSDL,SOAP,XML等的基本规范。
熟悉Eclipse+MyEclipse开发环境。
一、环境准备使用Axis来开发Web services 需要准备 web 服务器,Axis API。
本文使用的Web container 是Tomcat5.5, Axis API 采用版本2。
1.1软件下载准备Tomcat下载地址:/download-55.cgi#5.5.20Axis标准包:/ws/axis2/1_5_1/axis2-1.5.1-bin.zipAxis War包:/ws/axis2/1_5_1/axis2-1.5.1-war.zip Eclipse+MyEclipse:可以到官方网站下载(本文为3.3+6.5GA)1.2安装A.首先搭建开发环境,需要将下载到的Eclipse解压缩到一个目录。
B.安装MyEclipse6.5GA。
然后启动MyEclipse。
C.下面开始搭建Web Services的部署环境。
将下载的tomcat包解压缩到一个目录。
完成web container的安装。
E.将axis2.war包拷贝到tomcat安装目录下的webapps目录中。
F.启动Tomcat(windows 下为TOMCA_HOME/bin中的startup.bat;Linux,unix环境为startup.sh文件),打开浏览器输入并访问:http://ip:port/axis2来查看。
(如果没有进行配臵文件的修改此地址应该为http://localhost:8080/axis2),如果能看到下面的页面则说明已经安装完成。
二、Quick Start环境准备好后,先从一个简单的例子开始。
用axis2+Tomcat5.5+Eclipse3.2部署和访问Web服务-------jojoy 20070228一、环境准备使用Axis来开发Web services 需要准备 web 服务器,Axis API。
本文使用的Web c ontainer 是Tomcat5.5, Axis API 的版本为Axis2_1.1.1。
1.1软件下载准备Tomcat下载地址:/download-55.cgi#5.5.20Axis标准包:/ws/axis2/1_1_1/axis2-1.1.1-src.zipAxis War包:/ws/axis2/1_1_1/axis2.warAxis Eclipse plug-in(代码生成工具和打包工具):/ws/axis2/tools/1_1_1/axis2-eclipse-codegen-wizard.zip/ws/axis2/tools/1_1_1/axis2-eclipse-service-archiver-wizard.zipEclipse+MyEclipse:可以到官方网站下载(本文为3.2+5.0GA)1.2安装1》.首先搭建开发环境,需要将下载到的Eclipse解压缩到一个目录。
2》.将下载到的Axis 的两个plug-in解压缩到Eclipse安装目录下的plug-in子目录。
3》.安装MyEclipse5.0GA。
然后启动MyEclipse,并选择“File->New->Other”可以找到下面的这些W izards,这些将是本文中用到的很重要的工具。
4》.下面开始搭建Web Services的部署环境。
将下载的tomcat报解压缩到一个目录。
完成web cont ainer 的安装。
5》.将axis2.war包拷贝到tomcat安装目录下的webapps目录中。
6》.启动Tomcat(windows 下为TOMCA_HOME/bin中的startup.bat;Linux,unix环境为startup.sh文件),打开浏览器输入并访问:http://ip:8080/axis2(或2http://localhost:8080/axis)来查看,如果能看到下面的页面则说明已经安装完成。
用Tomcat 和Eclipse开发Web 应用程序(部署+发布)配置用Tomcat 和Eclipse开发Web 应用程序(部署+发布)配置。
(/developerworks/cn/opensource/os-eclipse-tomcat/)创建一个新的 Web 项目从 Eclipse IDE,选择File > New > Project查看项目向导。
在 Wizards 框,输入 Web,而 New Project 窗口会过滤向导以只显示匹配的那些项。
利用这种方法可以很容易找到向导,而无需遍历每一项。
从列表中选择Dynamic Web Project。
我们要使用 Standard Web Project Wizard 来建立静态 HTML Web 项目。
虽然您也可以在技术上使用 Tomcat 运行静态Web 站点,但 Web 服务器,比如 Apache Web Server 更适合于静态内容。
专门为服务于静态页面而设计的 Web 服务器拥有的开销更少,且专为此目的作了调优。
以运行库为目标在Target Runtime下,可以看到 <None>,如图 4 所示,由于您尚未为 Apache Tomcat 创建运行库,所以需要单击New打开New Target Runtime Wizard。
从 Apache 文件夹中选择 Apache Tomcat V5.5,如图 5 所示,然后单击Next。
图 4.创建一个新的动态 Web 项目图 5.创建一个新的服务器运行库现在,您可以命名此运行库,当然保留 Apache Tomcat V5.5 的默认名也可以。
单击Browse来定位用于 Apache Tomcat 配置的基本文件夹(我的是C:\apps\apache-tomcat-5.5.20,如图 6 所示)。
若无特殊原因,我建议不要更改,保留IBM® Java Runtime Environment (JRE) 版本作为工作台的默认 JRE。
教程:如何用Axis2开发和部署Web服务引言Axis2 是下一代Apache Axis。
Axis2 虽然由Axis 处理程序模型提供支持,但它具有更强的灵活性并可扩展到新的体系结构。
Axis2 基于新的体系结构进行了全新编写,而且没有采用Axis 的常用代码。
支持开发Axis2 的动力是探寻模块化更强、灵活性更高和更有效的体系结构,这种体系结构可以很容易地插入到其他相关Web 服务标准和协议(如WS-Security、WS-ReliableMessaging 等)的实现中。
Axis2 的特性包括:•采用名为AXIOM(AXI s O bject M odel,Axis 对象模型)的新核心XML 处理模型•支持In-Only 和In-Out 消息交换模式(MEP)•阻塞和非阻塞客户端API(应用程序编程接口)•支持内置的Web 服务寻址(WS-Addressing)•支持XMLBeans 数据绑定•新部署模型•支持超文本传输协议(HTTP)、简单邮件传输协议(SMTP) 和传输控制协议(TCP) 等传输协议本系列文章以Axis2 版本为基础。
您可以在网站获得Axis2 的最新版本。
Axis 体系结构概述图 1. Axis2 体系结构Axis2 体系结构将逻辑与状态分离;这允许在并行线程中执行逻辑。
服务和调用的静态状态和动态状态分别存储在Description和Context类中。
Axis2 体系结构是使用7 个独立模块实现的。
1.信息模型:此模块管理SOAP 引擎的状态。
该模型定义一组用于存放状态的类,而引擎管理这些信息对象的生命周期。
信息模型包含两种用于存放状态的类。
Description类存放本质上是静态的且存在于Axis 引擎实例的整个生命周期中的数据(如传输、服务和操作的配置)。
Context类存放调用上下文中有效的服务和操作的动态信息,例如当前请求和响应SOAP 消息、From 地址、To 地址和其他元素。
配置Java环境0.验证1.一、安装Eclipse和Tomcat1.安装Eclipse;2.解压缩安装apache-tomcat-6.0.413.tomcat配置环境变量(4个)TOMCAT_HOME D:\AndroidSoftwares\apache-tomcat-6.0.41CATALINA_HOME D:\AndroidSoftwares\apache-tomcat-6.0.41CLASSPATH D:\AndroidSoftwares\apache-tomcat-6.0.41\lib\servlet-api.jar或者%TOMCAT_HOME%\lib\servlet-api.jarPATH D:\AndroidSoftwares\apache-tomcat-6.0.41\bin或者%TOMCAT_HOME%\bin4.修改tomcat以下参数(1)将apache-tomcat-6.0.41\conf\server.xml中的port="8080"修改为8888,也可以不改。
<Connector connectionTimeout="20000" port="8888" protocol="HTTP/1.1" redirectPort="8443"/><!-- A "Connector" using the shared thread pool-->(2)在apache-tomcat-6.0.41\conf\tomcat-users.xml中添加<user password="admin" roles="manager-gui" username="admin"/>,为图形化界面创建登录账户。
使用axis实现Web Service一、实践过程1、在MyEclipse中新建一个testaxis应用工程,导入11个jar包文件后刷新testaxis应用工程,然后部署testaxis应用工程到Tomcat服务器中,截图如下:2、配置环境变量的信息CATALINA_HOME= C:\Tomcat_5_0AXIS_HOME= %CATALINA_HOME%\webapps\testaxis\WEB-INFAXIS_LIB=%AXIS_HOME%\libAXISCLASSPATH=%AXIS_LIB%\activation.jar;%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-disc overy-;%AXIS_LIB%\commons-logging-;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\log4j-;%AXIS_LI B%\mail.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\wsdl4j-;%AXIS_LIB%\xercesImpl.jar;%AXIS_ LIB%\xml-apis.jar3、确认testaxis应用的lib中包括上述的jar文件,包括文件名必须一样。
4、我要发布的服务是UserManage,待发布的java文件是UserManageInter.java和UserManageSoapBindingImpl.java,发布的方法是addPerson,JA V A代码如下:程序代码1:UserManageInter.javapackage ;import ;import ;public interface UserManageInter extends Remote {public void addUser(UserBean userBean) throws RemoteException;}程序代码2:UserManageSoapBindingImpl.javapackage ;import ;public class UserManageSoapBindingImpl implements UserManageInter{public void addUser( userBean) throws { return;}}//不用加处理代码程序代码3:UserBean.javapackage ;public class UserBean {private String ID;private String name;private String address;public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getID() {return ID;}public void setID(String id) {ID = id;}public String getName() {return name;}public void setName(String name) { = name;}}5、修改testaxis应用的web.xml文件,增加相关内容<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "/web-app_2_3.dtd"><web-app><display-name>Apache-Axis</display-name><listener><listener-class></listener-class></listener><servlet><servlet-name>AxisServlet</servlet-name><display-name>Apache-Axis Servlet</display-name><servlet-class></servlet-class></servlet><servlet><servlet-name>AdminServlet</servlet-name><display-name>Axis Admin Servlet</display-name><servlet-class></servlet-class><load-on-startup>100</load-on-startup></servlet><servlet><servlet-name>SOAPMonitorService</servlet-name><display-name>SOAPMonitorService</display-name><servlet-class></servlet-class><init-param><param-name>SOAPMonitorPort</param-name><param-value>5001</param-value></init-param><load-on-startup>100</load-on-startup></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-mapping><servlet-name>SOAPMonitorService</servlet-name><url-pattern>/SOAPMonitor</url-pattern></servlet-mapping><!-- uncomment this if you want the admin servlet --><servlet-mapping><servlet-name>AdminServlet</servlet-name><url-pattern>/servlet/AdminServlet</url-pattern></servlet-mapping><session-config><!-- Default to 5 minute session timeouts --><session-timeout>5</session-timeout></session-config><!-- currently the W3C havent settled on a media type for WSDL;/2003/WD-wsdl12-/#ietf-draftfor now we go with the basic 'it's XML' response --><mime-mapping><extension>wsdl</extension><mime-type>text/xml</mime-type></mime-mapping><mime-mapping><extension>xsd</extension><mime-type>text/xml</mime-type></mime-mapping></web-app>6、重启应用,访问,应该可以看到目前系统所提供SOAP服务的列表,应该只有两个,都是自带的,(AdminService和Version),如图:7、根据deploy.wsdd 生成server-config.wsdd。
Axis2 + Tomcat5 + Java Eclipse + JDK 5 配置方法一、版本:主件:Axis:本例用Axis 2.1.5.4Tomcat:本例用Apache Tomcat 5.5.33Java Eclipse:Eclipse IDE for J2EEJDK:JDK 1.5(5.0)其它:Sysdeo Tomcat Plug-in:本例使用Tomcat Plug-in 3.3下载tomcatPluginV33.zipAxis2 Code Generator Wizard Plug-in 和Axis2 Service Archive Wizard Plug-in二、配置过程:1、下载Eclipse、Tomcat 5.5、Axis2 Binary 包后解压放到F:/Program Files 下2、下载JDK 后安装到F:/Program Files/Java 下3、将三个Plug-in 包解压放入%Eclipse%/dropins 下4、下载Axis2 WAR 包解压,其中Axis2.war 文件放入%Tomcat%/webapps 下,打开Eclipse,启动Tomcat,而后在%Tomcat% 目录下看到生成的axis2 文件夹,删除Axis2.war5、配置环境变量(系统属性--> 高级--> 环境变量):a) 键:AXIS2_HOME值:F:/Program Files/axis2-1-5-4b) 键:CLASS_PATH值(填写时不加回车):.;%JAVA_HOME%/lib;F:/Program Files/apache-tomcat-5.5.33/webapps/axis2/WEB-INF/lib;c) 键:JAVA_HOME值:F:/Program Files/Java/jdk1.5.0_22d) 键:Path值添:F:/Program Files/axis2-1-5-4/bin;F:/Program Files/Java/jdk1.5.0_22/bin;6、配置Eclipse:a) Window -> Preferences -> Tomcat,version 选5.x,Tomcat home 为F:/Program Files/apache-tomcat-5.5.33b) Window -> Preferences -> Tomcat -> JVM Settings 中,JRE 选jre1.5c) Window -> Preferences -> Java -> Build Path -> User Libraries 中,New 一项Axis2,后Add JARs,将F:/Program Files/axis2-1-5-4/lib 下所有项添加d) Window -> Preferences -> Java -> Installed JREs 中,选jre1.57、配置Tomcat 用户:F:/Program Files/apache-tomcat-5.5.33/conf/ tomcat-users.xml,要求在<tomcat-users> 键下有<role rolename="manager"/><role rolename="admin"/><user username="libo" password="hikaliv"roles="admin,manager"/>更改并保存三、调试:1、打开Eclipse,File -> New -> Other 中出现Axis2 Wizards2、启动Tomcat,浏览器中http://127.0.0.1:8080/,点击Tomcat Manager,可以libo / hikaliv 登录3、浏览器中http://127.0.0.1:8080/axis2/,点击Validate,没有红字报错;点击Services 可查看当前正在运行的服务4、通过cmd 下ipconfig 命令可查看当前主机ipv4 地址。
1. 下载Axis2插件和部署环境Axis2官方网站:/axis2/java/core/index.html2. 为MyEclipse10安装Axis2开发插件,解压codegen-1.6.2.zip和service-1.6.2.zip,复制解压后的文件到MyEclipse10安装目录的dropins目录下,并新建一个记事本文件,命名为:axis2.link,写入内容:path=D:\\Program Files\\MyEclipse 10.1\\MyEclipse 10\\dropins。
重启MyEclipse10,即可看到Axis2插件已经安装成功3. 配置部署环境。
解压axis2-1.6.2-war.zip文件,把得到的axis2.war文件复制到Tomcat安装目录下的webapp文件夹下,并启动Tomcat。
在浏览器输入网址:http://localhost:8080/axis2/,看到如下界面,表示部署环境配置成功。
4. 开发webservice服务端。
新建web project(不能是java project)。
并添加com.server包,在包下建立两个类:DoubleArith.java和FloatArith.java,并写入以下内容。
生成Axis2服务端部署文件,DoubleArith.aar和FloatArith.aar。
先运行Axis2Server,使程序在classes文件夹下生成DoubleArith.class和FloatArith.class文件,因为这两个文件是生成aar 文件的必备文件这样就在D:\Run目录下生成DoubleArith.aar文件。
同理,可以生成FloatArith.aar。
把DoubleArith.aar和FloatArith.aar文件从D:\Run文件夹复制到Tomcat\webapp\axis2\WEB-INF\services目录下。
2011-04-05由/axis2/java/core/download.cgi下载axis2-1.4.1-bin.zip和axis2-1.4.1-war.zip(网络中诸多教程都是这个版本,便于发现问题时好解决)。
将axis2-1.4.1-war.zip解压后拷入tomcat\webapps,然后重启tomcat,tomcat会自动识别war文件并生成axis2文件夹。
然后输入http://localhost:8080/axis2/会看到欢迎界面。
由/dist/ws/axis2/tools/1_4_1/下载插件axis2-eclipse-codegen-wizard.zip和axis2-eclipse-service-archiver- wizard.zip两个文件,解压。
将这两个文件夹放入MyEclipse 8.5\dropins中,Axis2_Codegen_Wizard_1.3.0中增加2个jar backport-util-concurrent-3.1.jar、geronimo-stax-api_1.0_spec-1.0.1.jar,且修改plugin.xml增加这2个jar如图:Axis2_Codegen_Wizard_1.4.0其实是1.3.0版本文件夹改个名,且修改plugin.xml中<plugin>标签中的version为”1.4.0”通过命令行进入myeclipse.exe所在文件夹输入myeclipse.exe -vm "C:\Program Files\Java\jdk1.6.0_10\bin\java.exe" -clean -console -consoleLog -debug -vmargs -Xmx384M(注意查看自己的java路径)重启myeclipse通过开发服务端类来发布服务新建web project:sayhello首先我们先建一个包在src右键new->package,取名com在这个包下新建一个类Hellopackage com;/**服务端* @author tower**/public class Hello {public String helloworld(String name) { return"helloworld," + name;}}通过服务端类生成wsdl最终将要生成的hello.wsdl[自定义名称]放到src 目录下刷新后可见通过wsdl生成aar,发布服务再选择前述生成的wsdl,选择next点击load 最终将aar文件包输出到WEB-INF下,并命名将aar文件复制到tomcat/webapps/axis2/WEB-INF/services目录下。
用axis2+Tomcat5.5+MyEclipse7.5部署和访问Web服务-------Sunny 20101208一、环境准备1.1软件下载准备Axis Eclipse plug-in(代码生成工具和打包工具): Axis2_Codegen_Wizard_1.3.0Axis2_Service_Archiver_1.3.0Axis War包: axis2-1.4-warTomcat: apache-tomcat-5.5.27MyEclipse: MyEclipse7.51.2安装1) 安装MyEclipse7.5。
2) 将下载到的Axis 的两个plug-in解压缩到MyEclipse安装目录下的dropins子目录。
3)启动MyEclipse,并选择“File->New->Other”可以找到下面的这些Wizards4)下面开始搭建Web Services的部署环境。
将下载的tomcat报解压缩到一个目录。
完成web container 的安装。
5)将axis2.war包拷贝到tomcat安装目录下的webapps目录中。
axis2-1.4-war.zip解压完后出现axis2.war,将其后缀改为rar后继续解压,并将解压后的3个文件复制到webapps目录axis2子目录下。
6)启动Tomcat(windows 下为TOMCA_HOME/bin中的startup.bat;Linux,unix环境为startup.sh文件),打开浏览器输入并访问:http://ip:8080/axis2(或2http://localhost:8080/axis)来查看,如果能看到下面的页面则说明已经安装完成。
二、进入开发2.1 建立要发布的WebService1)在MyEclispse中添加一个用户库命名为axis2,将axis2\WEB-INF\lib下的包均添加进来,然后建立一个JavaProject命名为AccountService,将axis2用户库加入到build path中。
2)现在开始编写要发布的WebSevice,在src中建包account,建立AccountOper类如下:package account;public class AccountOper {private static int[] fund = {10000, 500, 700, 5800};public static int accountID = 0;//in {0,1,2}public boolean setAccountID( int id ) {if(id < 0 || id > fund.length)return false;this.accountID = id;return true;}public boolean checkInput(int money) {if (money > fund[accountID]) {return false;} else {return true;}}return fund[accountID];}//withdrawpublic int withdraw(int money) {if (checkInput(money)) {fund[accountID] = fund[accountID] - money;}return fund[accountID];}public int getAccount() {return fund[accountID];}}//depositpublic int deposit(int money) {fund[accountID] = fund[accountID] + money;}return fund[accountID];}public int getAccount() {return fund[accountID];}}2.2发布WebService1)打包要发布的Service,Eclipse中New --> File --> Other --> Axis2 wizards --> Axis2 Services Archiver,按照向导选择刚建立的类编译后的class文件和services.xml文件(选择自动生成)。
这里的Class File Location路径是刚才建好的AccountOper.class文件路径这里选择自动生成xml文件即可。
这里可以改变Service的名字。
写上文件输出位置,finish就行了。
2)将sunny_service.aar拷贝到Tomcat 5.5\webapps\axis2\WEB-INF\services目录下,重新打开http://localhost:8080/axis2/services/listService就会发现AccountService已经发布成功,现在就可以应用这个Web服务了。
这里有Sunny这个服务。
2.3测试1)生成WSDL文件Account.AccountOper的class文件的路径是D:\sunny—workspace\AccountService\bin2)通过WSDL文件生成AccountServiceCallbackHandler.java和AccountServiceStub.java参数不变注意下输出的路径3)在工程目录按F5刷新,就可以看到刚生成的文件,但提示都有错误,这是因为包名不一样。
解决方法是将生成的两个文件直接移动到account包下,如图:4)编写服务测试程序AccountTest.java如下:package account;public class AccountTest {public static void main(String[] args) throws Exception {// TODO Auto-generated method stubString endpoint = "http://localhost:8080/axis2/services/Sunny";AccountOperStub stub = new AccountOperStub(endpoint);AccountOperStub.SetAccountID set = newAccountOperStub.SetAccountID();set.setId( 2 );stub.setAccountID( set );AccountOperStub.GetAccountResponse get = stub.getAccount();System.out.println( "Current: " + get.get_return() );AccountOperStub.Deposit dep = new AccountOperStub.Deposit();dep.setMoney( 120 );AccountOperStub.DepositResponse depRes = stub.deposit( dep );System.out.println( "After Deposit 120: "+ depRes.get_return());AccountOperStub.Withdraw draw = new AccountOperStub.Withdraw();draw.setMoney( 50 );AccountOperStub.WithdrawResponse drawRes = stub.withdraw( draw );System.out.println( "After Withdraw 50: " +drawRes.get_return());AccountOperStub.GetAccountResponse getLast = stub.getAccount();System.err.println( "At last: " + getLast.get_return() );}}运行结果如下:测试成功!但是不理想的是有两个警告。
三、在局域网其他客户机调用以下介绍在局域网客户端调用上面发布的AccountService。
为了不受杀毒软件及防火墙的影响,测试时我们把杀毒软件及防火墙关闭。
1)新建一个web project2)New --> File --> Other --> Axis2 wizards --> Axis2 Code Generator,按下一步注意路径是在web project的工程下src子目录中。
3)刷新一下项目,就可以看到刚生成的客户端文件了,SunnyStub.java和SunnyCallbackHandler.java,但都有错误,这是生成的包名的问题,改一下:把包名src.account改成account就行了。
4)写测试类package account;public class AccountTest {public static void main(String[] args) throws Exception { // TODO Auto-generated method stubString endpoint = "http://localhost:8080/axis2/services/Sunny";SunnyStub stub = new SunnyStub(endpoint);SunnyStub.SetAccountID set = new SunnyStub.SetAccountID();set.setId( 2 );stub.setAccountID( set );SunnyStub.GetAccountResponse get = stub.getAccount();System.out.println( "Current: " + get.get_return() );SunnyStub.Deposit dep = new SunnyStub.Deposit();dep.setMoney( 120 );SunnyStub.DepositResponse depRes = stub.deposit( dep );System.out.println( "After Deposit 120: "+ depRes.get_return());SunnyStub.Withdraw draw = new SunnyStub.Withdraw();draw.setMoney( 50 );SunnyStub.WithdrawResponse drawRes = stub.withdraw( draw );System.out.println( "After Withdraw 50: " +drawRes.get_return());SunnyStub.GetAccountResponse getLast = stub.getAccount();System.err.println( "At last: " + getLast.get_return() );}}运行结果:和在本机测试一样,调用成功!(每次运行前要初始化的,重开Tomcat)。