axis2开发webservice简单实例
javaWebService测试小例子
javaWebService测试⼩例⼦在朋友的帮助下,写出了⼀个webService的⼩例⼦,这个webService是基于axis2写的,写出来,作为备忘。
⾸先去Apache官⽅下载axis,我⽤的是axis2-1.2这个版本,最新是axis2-1.3的版本,但是1.3需要JDK1.5的⽀持,我本机是JDk1.4,所以我⽤axis2-1.2作为ws(web service)的服务。
把下载的war包放到tomcat的webapps⽬录,启动tomcat服务,在浏览器地址栏输⼊http://localhost:8080/axis2/(根据每个⼈的tomcat配置的不同,这个路径可能不同),如果出现下⾯界⾯就说明ws服务没有问题了。
下⾯编写java的ws服务先编写服务器端的,从最简单的hello,world开始,⼯程如下图:Hello.javapackage com;public class Hello {public String hw() {return "hello,world";}}在再src下⾯建⼀个meta-inf的⽂件夹,创建⼀个services.xml的⽂件,⽂件内容如下:<service name="Hello"><Description>helloword example description</Description><parameter name="ServiceClass" locked="false">com.Hello</parameter><operation name="hw"><messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /></operation></service>在上⾯的xml描述中,com.Hello是指你建⽴的类名称,hw是对应的⽅法,Hello是对应的服务名称。
axis2发布webservice总结wangxz
Axis2发布webservice总结详细例子demo本人测试用的了tomcat 下面能够正常使用在was和WebLogic下面应该是版本不兼容的问题,一直启动失败在was直接部署axis2.war包错误信息用到的jar包axis2-1.5.4-war.zip axis2-1.5.4-bin.zip编写webservice首先下载jar包上面已经有了解压缩bin包目录如下写接口的时候可以一个jar包不需要客户端调用的时候需要用的lib目录下面的所有jar包解压缩war包将axis2.war导入到Eclipse里面找到axis2.xml并修改下面配置修改<parameter name="userName">wangxz</parameter><parameter name="password">123456</parameter>这两个配置是axis2后台管理员的账号和密码用于部署和更新webservice <parameter name="hotdeployment">true</parameter><parameter name="hotupdate">true</parameter>这里个配置是热部署和热更新的意思设置为true<!--~ Licensed to the Apache Software Foundation (ASF) under one ~ or more contributor license agreements. See the NOTICE file ~ distributed with this work for additional information~ regarding copyright ownership. The ASF licenses this file~ to you under the Apache License, Version 2.0 (the~ "License"); you may not use this file except in compliance ~ with the License. You may obtain a copy of the License at~~ /licenses/LICENSE-2.0~~ Unless required by applicable law or agreed to in writing,~ software distributed under the License is distributed on an~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY~ KIND, either express or implied. See the License for the~ specific language governing permissions and limitations~ under the License.--><axisconfig name="AxisJava2.0"><!-- ================================================= --><!-- Parameters --><!-- ================================================= --><parameter name="hotdeployment">true</parameter><parameter name="hotupdate">true</parameter><parameter name="enableMTOM">false</parameter><parameter name="enableSwA">false</parameter><parameter name="EnableChildFirstClassLoading">false</parameter><!--Uncomment if you want to enable file caching for attachments --> <!--parameter name="cacheAttachments">true</parameter><parameter name="attachmentDIR"></parameter><parameter name="sizeThreshold">4000</parameter--><!--Uncomment if you want to plugin your own attachments lifecycle implementation --><!--<attachmentsLifecycleManagerclass="org.apache.axiom.attachments.lifecycle.impl.LifecycleManagerIm pl"/>--><!--Uncomment if you want to enable the reduction of the in-memory cache of WSDL definitions --><!--In some server environments, the available memory heap is limited and can fill up under load --><!--Since in-memory copies of WSDL definitions can be large, some steps can be taken--><!--to reduce the memory needed for the cached WSDL definitions. --> <!--parameter name="reduceWSDLMemoryCache">true</parameter--><!--This will give out the timout of the configuration contexts, inmilliseconds--><parameter name="ConfigContextTimeoutInterval">30000</parameter><!--During a fault, stack trace can be sent with the fault message. The following flag will control --><!--that behavior.--><parametername="sendStacktraceDetailsWithFaults">false</parameter><!--If there aren't any information available to find out the fault reason, we set the message of the exception--><!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be --><!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag--><!--is set, then Axis2 tries to get the first exception and set its message as the faultreason/Reason.--><parametername="DrillDownToRootCauseForFaultReason">false</parameter><parameter name="userName">wangxz</parameter><parameter name="password">123456</parameter><!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.--><!--ServicesDirectory only works on the following cases--><!---File based configurator and in that case the value should be a file URL (http:// not allowed)--><!---When creating URL Based configurator with URL file:// --><!--- War based configurator with expanded case , --><!--All the other scenarios it will be ignored.--><!--<parameter name="ServicesDirectory">service</parameter>--><!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path--><!--<parameter name="ModulesDirectory">modules</parameter>--><!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context--><!--root which can configured using the following contextRoot parameter--><!--<parameter name="contextRoot">axis2</parameter>--><!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguiush those endpoints--> <!--In case of a servlet, if you change this you have to manually change the settings of your servlet container to map this --><!--context path to proper Axis2 servlets--><!--<parameter name="servicePath">services</parameter>--><!--<parameter name="restPath">rest</parameter>--><!-- Following parameter will completely disable REST handling in Axis2--><parameter name="disableREST"locked="false">false</parameter><!-- Following parameter will suppress generation of SOAP 1.2 bindings in auto-generated WSDL files --><parameter name="disableSOAP12"locked="true">false</parameter><!--POJO deployer , this will alow users to drop .class file and make that into a service--><deployer extension=".class"directory="pojo" class="org.apache.axis2.deployment.POJODeployer"/><deployer extension=".jar"directory="servicejars"class="org.apache.axis2.jaxws.framework.JAXWSDeployer"/> <deployer extension=".jar"directory="transports"class="org.apache.axis2.deployment.TransportDeployer"/><!--CORBA deployer , this will alow users to invoke remote CORBA services through Axis2--><!--<deployer extension=".xml" directory="corba" class="org.apache.axis2.corba.deployer.CorbaDeployer"/>--><!--<deployer extension=".jsa" directory="rmiservices" class="org.apache.axis2.rmi.deploy.RMIServiceDeployer"/>--><!-- Following parameter will set the host name for the epr--><!--<parameter name="hostname" locked="true"></parameter>--><!-- If you have a front end host which exposes this webservice using a different public URL --><!-- use this parameter to override autodetected url --><!--<parametername="httpFrontendHostUrl">https://someotherhost/context</parameter>--><!--By default, JAXWS services are created by reading annotations. WSDL and schema are generated--><!--using a separate WSDL generator only when ?wsdl is called. Therefore, even if you engage--><!--policies etc.. to AxisService, it doesn't appear in the WSDL. By setting the following property--><!--to true, you can create the AxisService using the generated WSDL and remove the need for a--><!--WSDL generator. When ?wsdl is called, WSDL is generated in the normal way.--><parameter name="useGeneratedWSDLinJAXWS">false</parameter><!-- The way of adding listener to the system--><!-- <listener class="org.apache.axis2.ObserverIMPL">--><!-- <parameter name="RSS_URL">http://127.0.0.1/rss</parameter>--><!-- </listener>--><threadContextMigrators><threadContextMigratorlistId="JAXWS-ThreadContextMigrator-List"class="org.apache.axis2.jaxws.addressing.migrator.EndpointContextMapM igrator"/></threadContextMigrators><!-- ================================================= --><!-- Message Receivers --><!-- ================================================= --><!--This is the default MessageReceiver for the system , if you want to have MessageReceivers for --><!--all the other MEP implement it and add the correct entry to here , so that you can refer from--><!--any operation --><!--Note : You can override this for a particular service by adding the same element with your requirement--><messageReceivers><messageReceiver mep="/2004/08/wsdl/in-only"class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/> <messageReceiver mep="/2004/08/wsdl/in-out"class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/><messageReceiver mep="/2006/01/wsdl/in-only"class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/> <messageReceiver mep="/2006/01/wsdl/in-out"class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> <messageReceiver mep="/ns/wsdl/in-only"class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/> <messageReceiver mep="/ns/wsdl/in-out"class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> </messageReceivers><!-- ================================================= --><!-- Message Formatter --><!-- ================================================= --><!--Following content type to message formatter mapping can be used to implement support for different message --><!--format serialization in Axis2. These message formats are expected to be resolved based on the content type. --><messageFormatters><messageFormattercontentType="application/x-www-form-urlencoded"class="org.apache.axis2.transport.http.XFormURLEncodedFormatter"/> <messageFormatter contentType="multipart/form-data"class="org.apache.axis2.transport.http.MultipartFormDataFormatter"/> <messageFormatter contentType="application/xml"class="org.apache.axis2.transport.http.ApplicationXMLFormatter"/> <messageFormatter contentType="text/xml"class="org.apache.axis2.transport.http.SOAPMessageFormatter"/> <messageFormatter contentType="application/soap+xml"class="org.apache.axis2.transport.http.SOAPMessageFormatter"/> </messageFormatters><!-- ================================================= --><!-- Message Builders --><!-- ================================================= --><!--Following content type to builder mapping can be used to implementsupport for different message --><!--formats in Axis2. These message formats are expected to be resolved based on the content type. --><messageBuilders><messageBuilder contentType="application/xml"class="org.apache.axis2.builder.ApplicationXMLBuilder"/><messageBuilder contentType="application/x-www-form-urlencoded"class="org.apache.axis2.builder.XFormURLEncodedBuilder"/><messageBuilder contentType="multipart/form-data"class="org.apache.axis2.builder.MultipartFormDataBuilder"/> </messageBuilders><!-- ================================================= --><!-- Transport Ins --><!-- ================================================= --><!-- The default configuration assumes that AxisServlet only receives requeststhrough HTTP. To allow HTTPS as well, configure a second AxisServletListenerwith name="https" and specify the port parameter on both receivers.For more information, please have a look at the servlet transport documentation:/axis2/java/core/docs/servlet-transport.html--><transportReceiver name="http"class="org.apache.axis2.transport.http.AxisServletListener"/><!--Uncomment if you want to have TCP transport support--><!--transportReceiver name="tcp"class="org.apache.axis2.transport.tcp.TCPServer"><parameter name="port">6060</parameter-->><!--If you want to give your own host address for EPR generation--> <!--uncomment the following paramter , and set it as you required.--> <!--<parameter name="hostname">tcp:///ws</parameter>--> <!-- /transportReceiver --><!-- ================================================= --><!-- Transport Outs --><!-- ================================================= --><!--Uncomment if you want to have TCP transport support--><!--<transportSender name="tcp"class="org.apache.axis2.transport.tcp.TCPTransportSender"/>--><transportSender name="local"class="org.apache.axis2.transport.local.LocalTransportSender"/> <transportSender name="http"class="monsHTTPTransportSender"> <parameter name="PROTOCOL">HTTP/1.1</parameter><parameter name="Transfer-Encoding">chunked</parameter><!-- If following is set to 'true', optional action part of the Content-Type will not be added to the SOAP 1.2 messages --><!-- <parameter name="OmitSOAP12Action">true</parameter> --> </transportSender><transportSender name="https"class="monsHTTPTransportSender"> <parameter name="PROTOCOL">HTTP/1.1</parameter><parameter name="Transfer-Encoding">chunked</parameter> </transportSender><!-- Please enable this if you need the java transport --><!-- <transportSender name="java"class="org.apache.axis2.transport.java.JavaTransportSender"/> --><!-- ================================================= --><!-- Global Modules --><!-- ================================================= --><!-- Comment this to disable Addressing --><module ref="addressing"/><!--Configuring module , providing parameters for modules whether they refer or not--><!--<moduleConfig name="addressing">--><!--<parameter name="addressingPara">N/A</parameter>--><!--</moduleConfig>--><!-- ================================================= --><!-- Clustering --><!-- ================================================= --><!--To enable clustering for this node, set the value of "enable" attribute of the "clustering"element to "true". The initialization of a node in the cluster is handled by the classcorresponding to the "class" attribute of the "clustering" element. It is also responsible forgetting this node to join the cluster.--><clusteringclass="org.apache.axis2.clustering.tribes.TribesClusteringAgent"enable="false"><!--This parameter indicates whether the cluster has to be automatically initalizedwhen the AxisConfiguration is built. If set to "true" the initialization will not bedone at that stage, and some other party will have to explictly initialize the cluster.--><parameter name="AvoidInitiation">true</parameter><!--The membership scheme used in this setup. The only values supported at the moment are"multicast" and "wka"1. multicast - membership is automatically discovered using multicasting2. wka - Well-Known Address based multicasting. Membership is discovered with the helpof one or more nodes running at a Well-Known Address. New members joining acluster will first connect to a well-known node, register with the well-known nodeand get the membership list from it. When new members join, one of the well-knownnodes will notify the others in the group. When a member leaves the cluster oris deemed to have left the cluster, it will be detected by the Group MembershipService (GMS) using a TCP ping mechanism.--><parameter name="membershipScheme">multicast</parameter><!--The clustering domain/group. Nodes in the same group will belong to the same multicastdomain. There will not be interference between nodes in different groups.--><parameter name="domain">wso2.carbon.domain</parameter><!--When a Web service request is received, and processed, before the response is sent to theclient, should we update the states of all members in the cluster? If the value ofthis parameter is set to "true", the response to the client will be sent only afterall the members have been updated. Obviously, this can be time consuming. In some cases,such this overhead may not be acceptable, in which case the value of this parametershould be set to "false"--><parameter name="synchronizeAll">true</parameter><!--The maximum number of times we need to retry to send a message to a particular nodebefore giving up and considering that node to be faulty--><parameter name="maxRetries">10</parameter><!-- The multicast address to be used --><parameter name="mcastAddress">228.0.0.4</parameter><!-- The multicast port to be used --><parameter name="mcastPort">45564</parameter><!-- The frequency of sending membership multicast messages (in ms) --><parameter name="mcastFrequency">500</parameter><!-- The time interval within which if a member does not respond, the member will bedeemed to have left the group (in ms)--><parameter name="memberDropTime">3000</parameter><!--The IP address of the network interface to which the multicasting has to be bound to.Multicasting would be done using this interface.--><parameter name="mcastBindAddress">127.0.0.1</parameter><!-- The host name or IP address of this member --><parameter name="localMemberHost">127.0.0.1</parameter><!--The TCP port used by this member. This is the port through which other nodes willcontact this member--><parameter name="localMemberPort">4000</parameter><!--Preserve message ordering. This will be done according to sender order.--><parameter name="preserveMessageOrder">true</parameter><!--Maintain atmost-once message processing semantics--><parameter name="atmostOnceMessageSemantics">true</parameter><!--Properties specific to this member--><parameter name="properties"><property name="backendServerURL" value="https://${hostName}:${httpsPort}/services/"/><property name="mgtConsoleURL" value="https://${hostName}:${httpsPort}/"/></parameter><!--The list of static or well-known members. These entries will only be valid if the"membershipScheme" above is set to "wka"--><members><member><hostName>127.0.0.1</hostName><port>4000</port></member><member><hostName>127.0.0.1</hostName><port>4001</port></member></members><!--Enable the groupManagement entry if you need to run this node as a cluster manager.Multiple application domains with different GroupManagementAgent implementationscan be defined in this section.--><groupManagement enable="false"><applicationDomain name="apache.axis2.application.domain"description="Axis2 group"agent="org.apache.axis2.clustering.management.DefaultGroupManagementA gent"/></groupManagement><!--This interface is responsible for handling management of a specific node in the clusterThe "enable" attribute indicates whether Node management has been enabled--><nodeManagerclass="org.apache.axis2.clustering.management.DefaultNodeManager"enable="true"/><!--This interface is responsible for handling state replication. The property changes inthe Axis2 context hierarchy in this node, are propagated to all other nodes in the cluster.The "excludes" patterns can be used to specify the prefixes (e.g. local_*) orsuffixes (e.g. *_local) of the properties to be excluded from replication. The pattern"*" indicates that all properties in a particular context should not be replicated.The "enable" attribute indicates whether context replication has been enabled--><stateManagerclass="org.apache.axis2.clustering.state.DefaultStateManager"enable="true"><replication><defaults><exclude name="local_*"/><exclude name="LOCAL_*"/></defaults><contextclass="org.apache.axis2.context.ConfigurationContext"><exclude name="local_*"/></context><contextclass="org.apache.axis2.context.ServiceGroupContext"><exclude name="local_*"/></context><contextclass="org.apache.axis2.context.ServiceContext"><exclude name="local_*"/></context></replication></stateManager></clustering><!-- ================================================= --><!-- Phases --><!-- ================================================= --><phaseOrder type="InFlow"><!-- System predefined phases --><phase name="Transport"><handler name="RequestURIBasedDispatcher"class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"><order phase="Transport"/></handler><handler name="SOAPActionBasedDispatcher"class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"><order phase="Transport"/></handler></phase><phase name="Addressing"><handler name="AddressingBasedDispatcher"class="org.apache.axis2.dispatchers.AddressingBasedDispatcher"><order phase="Addressing"/></handler></phase><phase name="Security"/><phase name="PreDispatch"/><phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"><handler name="RequestURIBasedDispatcher"class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/> <handler name="SOAPActionBasedDispatcher"class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/> <handler name="RequestURIOperationDispatcher"class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/> <handler name="SOAPMessageBodyBasedDispatcher"class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/> <handler name="HTTPLocationBasedDispatcher"class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/> <handler name="GenericProviderDispatcher"class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/ ><handler name="MustUnderstandValidationDispatcher"class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDis patcher"/></phase><phase name="RMPhase"/><!-- System predefined phases --><!-- After Postdispatch phase module author or service author can add any phase he want --><phase name="OperationInPhase"><handler name="MustUnderstandChecker"class="org.apache.axis2.jaxws.dispatchers.MustUnderstandChecker"><order phase="OperationInPhase"/></handler></phase><phase name="soapmonitorPhase"/></phaseOrder><phaseOrder type="OutFlow"><!-- user can add his own phases to this area --><phase name="soapmonitorPhase"/><phase name="OperationOutPhase"/><!--system predefined phase--><!--these phase will run irrespective of the service--><phase name="RMPhase"/><phase name="PolicyDetermination"/><phase name="MessageOut"/><phase name="Security"/></phaseOrder><phaseOrder type="InFaultFlow"><phase name="Addressing"><handler name="AddressingBasedDispatcher"class="org.apache.axis2.dispatchers.AddressingBasedDispatcher"><order phase="Addressing"/></handler></phase><phase name="Security"/><phase name="PreDispatch"/><phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"><handler name="RequestURIBasedDispatcher"class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/><handler name="SOAPActionBasedDispatcher"class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/> <handler name="RequestURIOperationDispatcher"class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/> <handler name="SOAPMessageBodyBasedDispatcher"class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/> <handler name="HTTPLocationBasedDispatcher"class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/> <handler name="GenericProviderDispatcher"class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/ ><handler name="MustUnderstandValidationDispatcher"class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDis patcher"/></phase><phase name="RMPhase"/><!-- user can add his own phases to this area --><phase name="OperationInFaultPhase"/><phase name="soapmonitorPhase"/></phaseOrder><phaseOrder type="OutFaultFlow"><!-- user can add his own phases to this area --><phase name="soapmonitorPhase"/><phase name="OperationOutFaultPhase"/><phase name="RMPhase"/><phase name="PolicyDetermination"/><phase name="MessageOut"/><phase name="Security"/></phaseOrder></axisconfig>。
MyEclipse下开发Web_Service(Axis2)
如何将基于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 WebService 开发指南
Axis2.x WebService上次介绍了axis1.x的用法,这次继续上次的,将叙述axis2的用法。
Axis1.x在线博文:/hoojo/archive/2010/12/20/1911349.html一、准备工作1、开发准备首先需要下载axis2的相关jar包,到axis的官方网站即可获得开发的依赖包。
下载地址:/axis2/java/core/download.cgi现在最高的版本是1.5.4的然后你需要下载官方提供的axis的eclipse插件工具,可以帮助我们打包(aar)及其生产客户端调用代码。
下载页面:/axis2/java/core/tools/index.htmlService Archive Wizard - Eclipse Plug-inCode Generator Wizard - Eclipse Plug-in2、安装eclipse插件如果你的eclipse插件安装成功后,会看到如下效果:3、分析axis2-bin文件目录结构下载下来的axis2的依赖库,其中有一个axis2-1.5.3-bin.zip的库文件,目录结构如下:bin文件夹是axis2的常用工具,其中有将wsdl文件转换成客户端调用的wsdl2java工具及将java转换成wsdl文件的工具conf是axis2的配置文件lib运行所要的依赖库repository是发布过的axis服务和文件sample是示例webapp是web文件和jsp页面等4、我们需要将下载下来的axis2-1.5.3-war.zip中的axis2.war这个文件放在我们的tomcat目录下,启动tomcat就会把war文件转成一个可以跑起来的axis2的项目。
Tomcat启动后,在浏览器中输入:http://localhost:8080/axis2/你可以看到二、Axis2的简单WebService示例注意,上面的HelloWorldService是没有package的。
webservice的开发模版(axis2_15环境).docx
WebService的开发模版(Axis2 1.5环境)Axis2已经升级到1.5了,下载地址:/ws/axis2/1_5/axis2-1.5-bin.zip/ws/axis2/1_5/axis2-1.5-war.zip两个包,bin是开发包,war是部署包。
环境:axis2-1.5jdk1.5一、创建项目导创建一个Java项目,项目结构如下图:Service└─src└─pojo└─META-INF二、导入axis2的包解压缩axis2-1.5-bin.zip到一个目录下,然后直接引入axis2的jar包即可。
也可以讲axis 2的包复制到lib下。
三、创建服务axis2服务的创建过程就是写Java类。
这里创建一个最简单的Service,作为发布对象。
package pojo;/*** 测试Service** @author leizhimin 2009-8-4 15:48:13*/public class SimpleService {public String doSomething(String taskname) {System.out.println("MyServiceImpl is calling doSomething with "+ t askname + "!");return taskname + "is finished!";}}把创建好的SimpleService.class文件拷贝到axis的pojo下面,如果没有pojo文件夹则自己创建一个。
四、描述服务在项目的src\META-INF文件夹下面,创建services.xml,内容如下:<service name=" SimpleService "scope="application"targetNamespace="http: ///"><messageReceivers><messageReceiver mep="/2004/08/wsdl/in-only"class="org.apache.axis2.rpc.receivers.RPCInOn lyMessageReceiver"/><messageReceiver mep="/2004/08/wsdl/in-out"class="org.apache.axis2.rpc.receivers.RPCMess ageReceiver"/></messageReceivers><parameter name="ServiceClass">pojo.SimpleService</parameter></service>服务名:SimpleService服务实现类:pojo.SimpleService生成SimpleService.aar文件,目的是类文件可以带包名进行发布服务1.cmd->进入到项目的“src”目录 执行下面命令-“jar -cvf SimpleService.aar META-INF”;五、部署服务将下载的axis2-1.5-war.zip解开,得到一个axis2.war,将其解压缩到tomcat的默认的w eb发布目录webapp下面,比如,在我机器上会产生F:\apache-tomcat-6.0.20\webapps \axis2的目录,目录下面就是axis2.war里面的内容。
使用axis2进行WebService的开发
使用axis2进行WebService的开发使用axis2进行WebService的开发Apache Axis2 是Apache Axis SOAP 项目的后继项目。
此项目是Web 服务核心引擎的重要改进,目标是成为Web 服务和面向服务的体系结构(Service-Oriented Architecture,SOA)的下一代平台。
axis2 WebService开发分为服务端开发与客户端开发,服务端开发为对外提供服务,客户端开发为用户调用外部接口进行业务处理。
一、下载与安装1.下载下载地址:/axis2/java/core/download.cgi有以下下载列表:Binary Distribution zip | MD5 | PGPSource Distribution zip | MD5 | PGPWAR Distribution zip | MD5 | PGPDocuments Distribution zip | MD5 | PGP注:axis2-1.6.2-bin.zip里有axis2的jar包。
axis2-1.6.2-docs.zip里有详细的帮助文档。
axis2-1.6.2-src.zip里是源代码。
axis2-1.6.2-war.zip里是axis的管理平台,放到tomcat可直接使用。
注:本文用bin包进行命令行使用axis2,管理平台使用的是war包。
2.安装配置将axis2-1.6.2-bin.zip解压到本地目录D:\axis2-1.6.2设置环境变量。
【注:前提需要配置java环境变量】AXIS2_HOME 设置值D:\axis2-1.6.2Path 添加值%AXIS2_HOME%\bin二、服务端编写1.创建服务端的java项目testAsixServer。
编写类City与类User代码如下:[java] view plain copy package com.hsinghsu.model; public class City { private int cityCode;private String cityName; public int getCityCode() { return cityCode; } public void setCityCode(int cityCode) { this.cityCode = cityCode; } public String getCityName() { return cityName; } public void setCityName(String cityName){ this.cityName = cityName; } } [java] view plain copy package com.hsinghsu.model; public class User { private int id; private String name; private String password;private City city; public int getId(){ return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name){ = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public City getCity(){ return city; } public void setCity(City city) { this.city =city; } }编写服务类UserService。
MyEclipse10使用Axis2开发webservice
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目录下。
Apache Axis2配置及使用
使用Apache Axis2创建Web Service1、环境搭建●下载并安装jdk1.6●下载并安装tomcat6.0●下载并安装eclipse-jee-indigo●下载并解压apache axis2-1.5.22、Eclipse环境配置●设置jdk : Preferences —> Java —> Installed JRES●设置tomcat : Preferences —> Server —> Runtime Enviroments●设置Axis2 Runtime: Preferences —> Web Services —> Axis2Preferences —> Axis2 Runtime 指定为apache axis2的根路径●Preferences —> Web Services —> Server and Runtime 设置Web services runtime为Apache Axis23、简单web service示例开发(server)●打开server视图,添加tomcat服务器●设置HTTP/1.1的端口为:8089●创建Dynamic Web Project,修改configuration,选中Axis2 Web Services即可。
●新建一个class Caculate,进行加法和减法运算。
●选中Caculate类右键新建一个web service,根据向导一步一步完成即可。
如下图所示:选中publish the web service和monitor the web service点击start server,启动tomcat服务器点击finish,整个web service创建及部署成功。
测试:http://localhost:8089/WS_02/services/Caculate?wsdl 打开web service explorer,选择WSDL page,输入WSDL URL,如下图所示:测试结果:4、总结:开发过程中容易出现的问题:Failed while installing Axis2 Web Services Core 1.1出现上述问题的原因:eclipse的Bug,更换eclipse版本即可解决问题。
web-service-实例-axis2框架下基于rampart安全认证的
一、web sevices服务端axis2框架下基于rampart安全认证实例:1、下载axis2.war包;rampart-bin的压缩包(此处注意axis2的版本与jdk、tomcat 版本的兼容性问题)2、解压axis2压缩包3、搭建web项目datatransmission;将lib下的jar包导入到项目中;复制axis2-web目录到项目根目录;将WEB-INF下的conf、modules、services目录复制到项目根目录的WEB-INF下;再在刚刚考入的services目录下新建任意文件夹(例webs);再在刚刚新建的文件夹webs下新建META-INF文件目录;再在META-INF文件目录下新建services.xml文件;4、services.xml文件内容如下<?xml version="1.0"encoding="UTF-8"?><serviceGroup><service name="BusinessService"><description>test rampart service</description><operation name="getCurData"><messageReceiverclass="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/></operation><operation name="rampartMethod"><messageReceiverclass="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/></operation><parameter name="ServiceClass"locked="false">com.service.BusinessService</parameter><module ref="rampart"/><parameter name="InflowSecurity"><action><items>UsernameToken</items><passwordCallbackClass>com.rampart.WsServiceAuthHandler</passwordCallbackCl ass></action></parameter></service></serviceGroup>注:这里service暴露两个方法rampartMethod 及getCurData 供客户的访问调用;如果服务端的某些方法不想被访问可设为私有或放在其他的包下面;(同时axis2暂不支持list等集合方法【这里有些模糊,大家可以尝试下】)5、解压rampart-1.4.zip将lib目录下的jar包导入到项目中;将modules下的文件考入到项目根目录下modules文件目录中。
使用axis2创建并发布webservice.
点击查看已部署的服务
练习1
部署服务MyService,服务代码为MyService.java 依次访问服务的update方法和echo方法
练习2
部署服务WeatherService,服务类文件为 WeatherService.java
依次访问服务的setWeather方法和getWeather 方法
编写服务代码
服务代码
package samples.quickstart.service.pojo; import java.util.HashMap;
public class StockQuoteService { private HashMap map = new HashMap();//存储(symbol,price)值对 //按照symbol取price
存放部署描述文件的META-INF文件夹
和包名对应的文件夹结构,最底层放编译 后的class文件
文件夹可以直接部署,也可以打包成*.aar部署,部署位置为: tomcat目录\webapps\axis2\WEB-INF\services
启动tomcat
浏览器中输入地址http://localhost:8080/axis2
Axis2应用将充当SOAP服务器,监听SOAP消息,转 发给相应的服务。
创建和部署webservice的方式
Code-first approach: 先写服务代码,再部署服
务(手工编写WSDL或者使用工具生成WSDL)
POJO(Plain Old Java Objects)方式 AXIOM方式
使用Axis2创建和部署web服务
使用Axis2部署服务—环境准备
axis2新手教程实例
Axix2 webservice 开发教程例子简单易懂,很适合初学者。
开发环境:jdk1.6 tomcate5.0 Myeclipse5.0步骤:1.下载axis2所用包axis2-1.4.1-bin.zip 和axis2-1.4.1-war.zip并解压下载地址:/axis2/2.解压axis2-1.4.1-war.zip 将axis2.war 放到%TOME_HOME%\webapps中.启动Tomcate. IE地址输入:http://localhost:<port>/axis2/ .出现以上表示环境搭建成功。
3.下面开始开发自己的axis2 ws:创建web项目:我的项目工程名为axis2demo;将axis2-1.4.1\lib下所有jar导入。
创建一个HelloWorld.java在META-INF下建一个service.xml文件。
<?xml version="1.0" encoding="UTF-8"?><service><parameter name="ServiceClass" locked="false">com.xwx.demo.HelloWorld<poeration name="sayHello"><messageReceiverclass="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </poeration></parameter></service>注:关于service.xml的参数配置自己baidu+google4.就开始准备一下axis2的eclispe的插件了。
axis2的eclispe插件分为2个,一个是帮助我们生成aar文件的,另一个是帮我们用wsdl文件生成stub代码的。
Axis2快速构建Web Service
目前主流的Web Service引擎
Axis XFire Jboss WebLogic WebSphere Microsoft .Net
基于Axis2的Web Service快速开发
Axis2简介 Axis2安装与部署 Web Service开发步骤
Axis2简介
|――WEB-INF
|――classes
|――modules
|――addressing.mar
|――services
面)
|―― *.aar (所有的应用程序都打成aar包发布在这个目录下
|――lib
|――conf
|――axis2.xml
|――web.xml
Axis2安装与部署
4. 将axis2.war拷贝到tomcat的webapps目 录下。
searchConcreteStudent(result.getString("studentID").trim()); ArrayList<Course> courseList = getCourses(result.getString("studentID").trim()); searchedStudent.setCourseList(courseList); studentList.add(searchedStudent);}
信的传输协议。
SOAP Envelope
SOAP Header
SOAP Body
Web Service概述
<?xml version = “1.0” encoding = “UTF-8”?> <env:Envelope xmlns:env =
MYECLIPSE中用axis2插件开发web service
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目录下。
Axix2 webservice 开发教程
Axix2 webservice 开发教程
例子简单易懂,很适合初学者。
开发环境:jdk1.6 tomcate5.0 Myeclipse Or Eclipse
步骤:
1.下载axis2所用包axis2-1.4.1-war.zip并解压下载地址:/axis2/
2.解压axis2-1.4.1-war.zip 将axis2.war 放到%TOME_HOME%\webapps中.启动Tomcate. IE地址输入:http://localhost:<port>/axis2/ .
出现以上表示环境搭建成功。
3.下面开始开发自己的axis2 ws:
创建普通项目:
编写一个普通java类
在META-INF下建一个service.xml文件。
注:关于service.xml的更多参数配置可参照axis2的API 4.打包:自己编译一个小小的ant脚本即可
注意打包需要打成.aar的包
脚本示例:
具体war格式可参见附件
然后将生成的.aar文件,放到%TOME_HOME%\webapps\axis2\WEB-INF\services下。
启动服务
IE 输入:http://localhost:8088/axis2/
进入到
发布成功!
5.生成客户端使用插件生成,简单多了
最后刷新你的项目即可看到src下生成的目录了。
报错的话需要引用lib里面的包。
结束的时候自己写个测试类。
基于 Tomcat5.0和 Axis2开发Web Service应用实例
基于Tomcat5.0和Axis2开发Web Service应用实例版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。
否则将追究法律责任。
/113473/23690本文将介绍如何使用Tomcat5.0和Apache Axis2开发、部署及测试一个简单的Web Service 应用。
1.工作环境Eclipse 3.1.2+Lomboz+jdk1.5+ apache-tomcat-5.0.18+AXIS2:1.0(war版本和bin 版本)在/axis2/download/1_0/download.cgi页面下,下载AXIS2的Binary Distribution url: /ws/axis2/1_0/axis2-std-1.0-bin.zip和war Distribution url: /ws/axis2/1_0/axis2-1.0-docs.zip。
把这两个文件解压,比如解压缩的后得目录为C:\axis2-std-1.0-bin和C:\axis2.war。
在Eclipse下通过菜单window—preferences…--Java—Build Path—User Libraries 新建一个user library,比如名字就叫axis2把C:\axis2-std-1.0-bin\lib下的所有jar文件包含进来。
把axis2.war拷贝到%TOMCAT-HOME%/webapps下面。
2.检验安装在Eclipse下启动Tomcat,在地址栏内输入http://localhost:8080/axis2/。
点击Validate,将到达Axis2 Happiness Page。
3.WebService中的HelloWorld1)新建一个动态web工程,取名ZZaxis,右键点击项目名,选择Properties-Java Build Path-Add Library-User Library-axis2。
eclipse-jee用axis2开发webservice
开发环境Eclipse-jeeAxis2-1.5.2配置eclipse指定axis2新建一个动态web项目建立一个类菜单新建webservice选择刚才新建立的类,点击点击OK排除错误自动启动tomcat后,控制台报错现在启动服务器会抛出异常,这是因为Eclipse在自动加载生成该项目时有几个问题需要手动修复,下面分别列出:问题一:会抛出异常:ng.ClassNotFoundException:org.apache.axis2.transport.http.AxisAdminServlet是因为生动生成的web.xml文件中所指定的AxisAdminServlet包路径有错。
自动生成的源码如下:<servlet><display-name>Apache-Axis Servlet</display-name><servlet-name>AxisServlet</servlet-name><servlet-class>org.apache.axis2.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>Apache-Axis Admin Servlet Web Admin</display-name><servlet-name>AxisAdminServlet</servlet-name><servlet-class>org.apache.axis2.transport.http.AxisAdminServlet</servlet-class><load-on-startup>100</load-on-startup></servlet><servlet-mapping><servlet-name>AxisAdminServlet</servlet-name><url-pattern>/axis2-admin/*</url-pattern></servlet-mapping>注意红色字体部分,我们可以去看一下所下载的Axis2的源包。
快速上手指南 - 基于Eclipse Axis2 插件的Web Service开发[最新]【优秀】
快速上手指南 - 基于Eclipse Axis2 插件的Web Service开发[最新]【优秀】(文档可以直接使用,也可根据实际需要修订后使用,可编辑推荐下载)axis2创建web service(一)axis2 是新一代的web service开发工具,它会让你的web service开发变得轻松,快捷。
下面让我们以一个实际的例子来体验一下。
首先,工欲善其事,必先利其器。
就让我们先做好一些必备的准备工作吧。
1.下载axis2 的2进制的包和war,现在的最新版本是发布时间是2021-8-25地址分别是:2.把下载后的war放入tomcat的webapps目录里,然后启动tomcat,这样war包就会自动解压为目录axis2在浏览器中输入 ://localhost:8080/axis2/,如果一切正常你会看到下面的画面3,就开始准备一下axis2的eclispe的插件了。
axis2的eclispe插件分为2个,一个是帮助我们生成aar文件的,另一个是帮我们用wsdl文件生成stub代码的。
下载地址是下载完2个压缩文件后,可以直接把解压后的文件拷贝到plugins目录中,也可以在links目录中写文件路径的方式来安装插件,安装完插件后,打开eclipse,在package explorer 中点击右键--->选择new---->other如果安装正确你会看到这样准备工作就都做好了。
接下来就是正式开发了。
axis2创建web service(二)工具都已经准备齐全了。
我们来动手做一个小例子来小试牛刀!这一节我们先利用axis2来发布一个web service 的服务,然后在下一节我们做一客户端来调用这个服务。
我们的服务很简单的,就是输入一个字符串,然后打印出一段字符串。
代码很简单,主要是测试用。
Java代码1.2.3.public class SimpleServer {4.5. /**6. * 简单的测试方法7. *8. */9. public String simpleMethod(String name) {10. return name + "Say this is a Simple method ^-^";11. }12.13.}主要的过程就是如何利用axis2的eclispe插件来发布这个服务啦。
Eclipse配置 Axis2并开发一个简单的webservice程序
一.在Eclipse中配置Axis2插件。
1.下载Axis2插件(Axis2官网:/axis2/java/core/download.html)2. 配置Eclipse Axis2插件把axis2-eclipse-codegen-plugin-1.7.1.zip和axis2-eclipse-service-plugin-1.7.1.zip文件里面的jar文件解压出来,放到eclipse目录下的dropins文件夹下,并新建一个txt文件,写入dropins目录的绝对路径,保存后更改文件格式为.link。
重启Eclipse,然后点击File-> New->Other->Axis2 Wizards即可看到axis2功能是否配置成功。
二.用Eclipse开发Axis2服务端1.解压axis2-1.7.1-bin.zip和axis2-1.7.1-war.zip文件,axis2-1.7.1-bin的解压文件夹随便放在一个目录下即可,axis2-1.7.1-war解压后的axis2.war文件放在tomcat目录的webapp文件夹下。
启动tomcat并输入http://localhost:8080/axis2即可看到如下画面。
2.新建Java Project,目录如下图所示(该示例主要展示了如何把配置文件也打包进aar文件),把axis2-1.7.1-bin的lib目录下的全部.jar文件(其实这些包是给客户端使用的,而且只需要其中一部分即可,为了方便才全部复制)全部复制到lib目录下,然后build path进项目中,建立如下文件:com.axis.server包下的文件AxisServer.java和User.java;resources 包下的文件application.properties。
3.生成aar文件:File->New->Other->Axis2 Wizards->Axis2 Service Archiver,并按下图流程进行即可生成aar文件。
用Axis2开发Web Service及客户端
用Axis2开发Web Service及客户端在《使用Eclipse的Axis1.4插件开发Web Service及客户端》介绍的Axis是用的Axis1.x,而Axis2是改进版本,进行了重新的设计,应该是Axis的第二代,本文介绍Axis2的使用方法。
/axis2/是Axis2的主页,写这篇文章的时候最新版本是1.5,从/axis2/download/1_5/download.cgi下载axis2-1.5-bin.zip、axis2-1.5-war.zip。
axis2-1.5-war.zip是web发布版本,可以在网页上进行Web Service的动态部署,提供Web Service服务。
解压缩后把axis2.war放到tomcat的webapps下面,启动tomcat,在网页中输入http://localhost:8080/axis2(取决于tomcat的设置)就可以进行操作了。
这方面的资料很多,就不详细介绍了。
下面介绍使用Eclipse插件开发的方法,环境与《使用Eclipse的Axis1.4插件开发Web Service及客户端》的相同。
启动Eclipse后,首先设置Axis2的主目录,需要先解压缩axis2-1.5-bin.zip,然后把解压缩之后的路径填入Eclipse的Window|Preferences|Web Services|Axis2 Preferences的界面上,如下图所示:图1在Eclipse中设置Axis2的runtime建立一个简单的类:package demo.axis; public class User{public String sayHello(String userName){return "hello " + userName;}}把这个类发布为Web Service的步骤与《使用Eclipse 的Axis1.4插件开发Web Service及客户端》中的相同,只是要注意选择Axis2,生成之后的目录结构是:图2生成Web Service后的目录结构但生成之后的项目中缺少.jar文件,可以把%AXIS2-HOME%/lib下的所有文件复制到项目的WEB-INF/lib下面,部署到tomcat就可以运行了,在浏览器中输入http://localhost:8080/Axis2ServerDemo/services/User?wsd l就可以看到发布的Web Service的wsdl了。
java webservice axis2简单开发实例
Web Service学习之axis看着网上的资料学习了一下,做点笔记以防以后忘记。
一、准备工作:到axis官方网站下载相应的jar包,我下的是1.4final版。
/axis/二、建立项目:直接在MyEclipse中建立了一个web项目。
将相应的jar包拷贝到lib文件夹下三、创建一个WebService服务直接创建一个类HelloClient.javaJava代码1.package com;2.3.public class HelloServer {4. public String sayHello(String name) {5. return "Hello " + name;6. }7.}axis支持两种方式创建,一种是将编写好的java文件改为*.jws文件。
个人觉得这样不好,所以就用另外一种,采用在server-config.xml文件中配置的方式。
注意:该文件位置为WEB-INF目录下Xml代码1.<?xml version="1.0"encoding="UTF-8"?>2.<deployment xmlns="/axis/wsdd/"3.xmlns:java="/axis/wsdd/providers/java">4.<globalConfiguration>5.<parameter name="adminPassword"value="admin"/>6.<parameter name="enableNamespacePrefixOptimization"7.value="false"/>8.<parameter name="dotNetSoapEncFix"value="true"/>9.<parameter name="disablePrettyXML"value="true"/>10. <parameter name="sendMultiRefs"value="true"/>11. <parameter name="sendXsiTypes"value="true"/>12. <parameter name="attachments.implementation"13. value="org.apache.axis.attachments.AttachmentsImpl"/>14. <parameter name="sendXMLDeclaration"value="true"/>15.16. <requestFlow>17. <handler type="java:org.apache.axis.handlers.JWSHandler">18. <parameter name="scope"value="session"/>19. </handler>20. <handler type="java:org.apache.axis.handlers.JWSHandler">21. <parameter name="scope"value="request"/>22. <parameter name="extension"value=".jwr"/>23. </handler>24. </requestFlow>25. </globalConfiguration>26.27. <handler name="LocalResponder"28. type="java:org.apache.axis.transport.local.LocalResponder"/>29. <handler name="URLMapper"30. type="java:org.apache.axis.handlers.http.URLMapper"/>31. <handler name="Authenticate"32. type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>33.34. <service name="AdminService"provider="java:MSG">35. <parameter name="allowedMethods"value="AdminService"/>36. <parameter name="enableRemoteAdmin"value="false"/>37. <parameter name="className"value="org.apache.axis.utils.Admin"/>38. <namespace>/axis/wsdd/</namespace>39. </service>40.41. <service name="Version"provider="java:RPC">42. <parameter name="allowedMethods"value="getVersion"/>43. <parameter name="className"value="org.apache.axis.Version"/>44. </service>45. <SPAN style="COLOR: #ff0000"><service name="HelloServer"provider="java:RPC">46. <parameter name="allowedMethods"value="*"/>47. <parameter name="className"value="com.HelloServer"/>48. </service></SPAN>49.50. <transport name="http">51. <requestFlow>52. <handler type="URLMapper"/>53. <handler54. type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>55. </requestFlow>56. <parameter name="qs:list"57. value="org.apache.axis.transport.http.QSListHandler"/>58. <parameter name="qs:wsdl"59. value="org.apache.axis.transport.http.QSWSDLHandler"/>60. <parameter name="qs:method"61. value="org.apache.axis.transport.http.QSMethodHandler"/>62. </transport>63.64. <transport name="local">65. <responseFlow>66. <handler type="LocalResponder"/>67. </responseFlow>68. </transport>69.</deployment>web.xml文件中的配置如下Xml代码1.<?xml version="1.0"encoding="UTF-8"?>2.<web-app version="2.5"xmlns="/xml/ns/javaee"3.xmlns:xsi="/2001/XMLSchema-instance"4.xsi:schemaLocation="/xml/ns/javaee5. /xml/ns/javaee/web-app_2_5.xsd">6.<listener>7.<listener-class>8. org.apache.axis.transport.http.AxisHTTPSessionListener9.</listener-class>10. </listener>11.12. <servlet>13. <servlet-name>AxisServlet</servlet-name>14. <display-name>Apache-Axis Servlet</display-name>15. <servlet-class>16. org.apache.axis.transport.http.AxisServlet17. </servlet-class>18. </servlet>19.20. <servlet>21. <servlet-name>AdminServlet</servlet-name>22. <display-name>Axis Admin Servlet</display-name>23. <servlet-class>24. org.apache.axis.transport.http.AdminServlet25. </servlet-class>26. <load-on-startup>100</load-on-startup>27. </servlet>28.29. <servlet>30. <servlet-name>SOAPMonitorService</servlet-name>31. <display-name>SOAPMonitorService</display-name>32. <servlet-class>33. org.apache.axis.monitor.SOAPMonitorService34. </servlet-class>35. <init-param>36. <param-name>SOAPMonitorPort</param-name>37. <param-value>5001</param-value>38. </init-param>39. <load-on-startup>100</load-on-startup>40. </servlet>41.42. <servlet-mapping>43. <servlet-name>AxisServlet</servlet-name>44. <url-pattern>/servlet/AxisServlet</url-pattern>45. </servlet-mapping>47. <servlet-mapping>48. <servlet-name>AxisServlet</servlet-name>49. <url-pattern>*.jws</url-pattern>50. </servlet-mapping>51.52. <servlet-mapping>53. <servlet-name>AxisServlet</servlet-name>54. <url-pattern>/services/*</url-pattern>55. </servlet-mapping>56.57. <servlet-mapping>58. <servlet-name>SOAPMonitorService</servlet-name>59. <url-pattern>/SOAPMonitor</url-pattern>60. </servlet-mapping>61. <welcome-file-list>62. <welcome-file>index.jsp</welcome-file>63. </welcome-file-list>64.</web-app>四、部署启动tomcat:在浏览器地址栏输入http://localhost:8080/axisWebServiceServer/services可以看到已有的WebServicehttp://localhost:8080/axisWebServiceServer/services/HelloServer?wsdl 可以看到自己写的WebService五、测试调用WebServiceJava代码1.package com;2.3.import .MalformedURLException;4.import java.rmi.RemoteException;5.6.import javax.xml.rpc.ServiceException;7.8.import org.apache.axis.client.Call;9.import org.apache.axis.client.Service;11.public class HelloClient {12.13. public static void main(String[] args) {14. String status = "aaaaaaa";15. String endPoint = "http://localhost:8080/axisWebServiceServer/services/HelloServer";16. String operation = "sayHello";17. Service service = new Service();18.19. try {20. Call call = (Call) service.createCall();21. call.setTargetEndpointAddress(new .URL(endPoint));22. call.setOperationName(operation);23. String xml = (String) call.invoke(new Object[] { status });24. System.out.println(xml);25. } catch (ServiceException e) {26. e.printStackTrace();27. } catch (MalformedURLException e) {28. e.printStackTrace();29. } catch (RemoteException e) {30. e.printStackTrace();31. }32.33. }34.35.}成功!!java实现webservice实例一:首先创建个WEB工程,然后:/axis/网站下载Axis安装包.当然还依赖其他包的,我这里在附件里上传了所有应用到得包,方便大家。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
axis2创建web service(一)axis2 是新一代的web service开发工具,它会让你的web service开发变得轻松,快捷。
下面让我们以一个实际的例子来体验一下。
首先,工欲善其事,必先利其器。
就让我们先做好一些必备的准备工作吧。
下载axis2 的2进制的包和war,现在的最新版本是1.4.1 发布时间是地址分别是:/ws/axis2/1_4_1/axis2-1.4.1-bin.zip/ws/axis2/1_4_1/axis2-1.4.1-war.zip把下载后的war放入tomcat的webapps目录里,然后启动tomcat,这样war包就会自动解压为目录axis2(不可以的话,你就自己解压,放在此目录下)在浏览器中输入http://localhost:8080/axis2/,如果一切正常你会看到下面的画面就开始准备一下axis2的eclispe的插件了。
axis2的eclispe插件分为2个,一个是帮助我们生成aar文件的,另一个是帮我们用wsdl文件生成stub代码的。
(注意这两个插件的版本,要用的是1-3-0版本)下载地址是/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_4_1/axis2-eclips e-service-archiver-wizard.zip/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_4_1/axis2-eclips e-codegen-wizard.zip下载完2个压缩文件后,可以直接把解压后的文件拷贝到plugins目录中,也可以在links 目录中写文件路径的方式来安装插件,安装完插件后,打开eclipse,在package explorer 中点击右键--->选择new---->other如果安装正确你会看到这样准备工作就都做好了。
接下来就是正式开发了。
开发的过程:工具都已经准备齐全了。
我们来动手做一个小例子来小试牛刀!这一节我们先利用axis2来发布一个web service 的服务,然后在下一节我们做一客户端来调用这个服务。
我们的服务很简单的,就是输入一个字符串,然后打印出一段字符串。
代码很简单,主要是测试用。
Java代码package com.deltaj.server;public class SimpleServer {/*** 简单的测试方法**/public String simpleMethod(String name) {return name + "Say this is a Simple method ^-^";}}主要的过程就是如何利用axis2的eclispe插件来发布这个服务啦。
1。
在eclispe 的package Explorer 中点击右键,在菜单中选择新建--->other...----->Axis2 Service Archiver然后点击next进入了类选择页面,在这个页面中的Class File Location选择框中选择类所在的文件夹。
(注意这里的路径是.Java生成的.class的根节点)点击next之后进入了选择wsdl文件,这里我们选择skip wsdl。
点击next之后,进入的是选择jar文件的页面,这里我们没有外部的jar,所以点击next直接跳过这个页面。
点击next之后,进入的是选择xml页面,这里我们选择的是自动生成xml,也就是勾选Generate the service xml automatically这一项点击next之后,进入的是生成xml文件的页面,在service name 里填写这个服务所起的名字,这里我起名为simpleServer,然后在class name 中填写要发布的类,这里一定要写全路径,写好后就可以点击load 按钮,如果一切ok的话,你会看到如下画面点击next 后,进入的是输出artiver文件的页面,先要在output File location 中选择要输出的路径,在output File Name中输入artiver文件的名称。
我起的名字是simpleServer点击finish ,如果看到如下的画面,恭喜你,服务发布成功啦。
(在此有可能发布不成功,报错,可能是你版本的问题,我开始时,也这样)接下来,我们就可以把这个aar文件放入tomcat中发布,首先把生成的aar文件拷贝到tomcat 目录中的axis2项目的service目录中位置如图。
接下来启动tomcat,在地址栏中输入http://localhost:8080/axis2 ,你会看到axis2的欢迎画面点击Service连接,你会看到发布的服务列表。
这里面就能看到我们发布的simpleService点击我们的服务simpleServer的连接,我们会看到。
至此,服务发布成功。
关键字: axis2创建web service这节我们就来写一个客户端来调用一下这个服务。
主要关注一下如何用elispe的axis2的插件来生成stub代码。
1.在eclispe 的package Explorer 中点击右键,在菜单中选择新建--->other...----->Axis2 Code Generator点击next,进入下一个页面,选择从wsdl文件来产生java文件。
点击next,然后选择wsdl文件,注意此处要填写上一节我们4.点击next,进入设置页面,这里我们就用默认的设置。
(tomat要5. 点击next,选择输出文件的路径。
6.点击next,如果看到这个页面,恭喜你已经生成代码成功。
7.在package Explorer中刷新一下项目,然后你发现出现2个新的文件SimpleServerStub 和SimpleServerCallbackHandler 。
打开SimpleServerStub你会惊喜的发现。
著名的小红叉一个接一个的这是因为没有axis2的类包。
我们可以在下载的axis2-1.4.1-bin中找到lib包,把其中的jar都加入我们的工程中。
然后重新编译一下工程,这时我们发现SimpleServerStub还是有几个小红叉。
这个是因为这个插件有个小bug。
生成的代码没有实现序列化方法。
我们可以自己来加上,在小红叉上点一下,弹出一个小菜单,选择Add unimplemented methods .Java代码1./**2. * 调用发布的服务。
3. *4. */5.public class SimpleClient {6.7. public static void main(String[] args) throws Exception{8.9. //初始化桩文件10. SimpleServerStub stub = new SimpleServerStub();11. //初始化SimpleMethod方法。
12. SimpleServerStub.SimpleMethod request = new SimpleServerStub.SimpleMethod();13. //调用simpleMethod的setName方法。
14. request.setName("zt");15. //16. System.out.println(stub.simpleMethod(request).get_return());17.18.19. }20.}如果一切正常,你就会看到结果log4j:WARN No appenders could be found for logger(org.apache.axis2.description.AxisService).log4j:WARN Please initialize the log4j system properly.ztSay this is a Simple method ^-^。
调用服务成功。
这是个简单的例子,下节我们再做一个复杂一点的例子,来更好的学习axis2注意:在MyEclipse6.5中会报错:An error ocurred while completing processng.reflect.InvocationTargetException主要的问题在于Code Generator plugin 内缺少了backport-util-concurrent-3.1.jar 包和geronimo-stax-api_1.0_spec-1.0.1.jar 包。
[解决方案] :1.关闭Eclipse2.copy %AXIS2_HOME%\lib\ 下的backport-util-concurrent-3.1.jar 和backport-util-concurrent-3.1.jar复制到MyEclipse 6.5\eclipse\plugins\Axis2_Codegen_Wizard_1.3.0\lib 文件夹下。
3.注册此jar 包:修改MyEclipse 6.5\eclipse\plugins\Axis2_Codegen_Wizard_1.3.0\plugin.xml 文件在<runtime> 內加入下面的字串<library name="lib/geronimo-stax-api_1.0_spec-1.0.1.jar"><export name="*"/></library><library name="lib/backport-util-concurrent-3.1.jar"><export name="*"/></library>到plugin.xml文件中,保存后重新启动Eclipse即可还要1. 把Axis2_Codegen_wizard_1.3.0(eclipse/plugins/Axis2_Codegen_wizard_1.3.0)的名字改成Axis2_Codegen_wizard_1.4.02. 在plugin.xml中在<plugin>中把Axis2_Codegen_wizard的version="1.3.0"改成version="1.3.0"上节我们做了一个简单的例子,调用的服务里的方法只是简单返回一个字符串,这次我们要做一个复杂点的例子,调用服务里的方法返回一个java Bean对象。