`
fenger_chui
  • 浏览: 104421 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

webservice编程基础——axis2

阅读更多
使用axis2进行webservice编程也是比较容易的,下面主要讲解一些axis2实现的过程,以及遇到的问题解决。
一,下载最新的axis2包axis2-1.6.2-bin.zip,和eclipse开发插件工具axis2-eclipse-codegen-wizard.zip,axis2-eclipse-service-archiver-wizard.zip,并解压,将解压后的文件axis2-eclipse-codegen-wizard和axis2-eclipse-service-archiver-wizard放入Myeclipse的安装目录dropins里面。启动Myeclipse。从名称可以看出axis2-eclipse-codegen-wizard是代码生成向导,axis2-eclipse-service-archiver-wizard是服务打包向导。
二,新建web project,并将axis2-1.6.2-bin.zip解压后的lib目录下的jar文件引入工程中,编写服务端代码,如下:

package axis.com.demo;
public class HelloServer {       
 public String sayHello(String name){  
        return "Hello kitty you are, " + name + "!";  
   }  
}        


打开Myeclipse,操作如下。
一,首先进行wsdl的生成和发布。进行File——》new ——》others——》Axis2 Winzards——》Axis2 Code  Generator。选择Generate a WSDL from a java source file.并设置classNmae和class目录,并点击test class loading.



点击下一步,直到进入如下页面,并设置生成wsdl的名称和目录如下:



正常的你会看到:



二,进行服务打包。File——》new ——》others——》Axis2 Winzards——》Axis2 Server Archiver,进入服务发布打包页面。

填写你的class地址。
下一步选择skip wsdl.在下一步选择依赖的jar包,如果没有,则继续下一步。默认自从生成XML文件。接下来填写服务名,和服务端的class文件所在目录。如下:


点击load,加载进来。设置要打的包的路径,这个路径一般设置在文件web-inf下面,且文件名应该和web.xml的设置保存一致。如下所示:

点击下一步就发布完成了。
在Myeclipse工程中正常的显示为:



再讲讲遇到的问题,可能在weblogic,遇到客户端访问报错的问题,其实也是服务端的jar包冲突,解决办法是优先使用web工程的jar包,可在WEB-INF下加上一个weblogic.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>

<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"> 

<container-descriptor> 

<prefer-web-inf-classes>true</prefer-web-inf-classes> 

</container-descriptor>

</weblogic-web-app>
true表示是优先使用web工程的jar文件。

web.xml内容(没有建立的话需要新建)如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:j2ee="http://java.sun.com/xml/ns/j2ee">
<servlet>
        <servlet-name>AxisServlet</servlet-name>
        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/services/*</url-pattern> 
</servlet-mapping>
</web-app>


客户端调用代码如下:

package axis.com.demo;
import javax.xml.namespace.QName;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class HelloClient {

public static void main(String[] args) {
	try {  
        // 获得客户端  
        RPCServiceClient serviceClient = new RPCServiceClient();  
        // 可以在该对象中设置服务端的验证信息  
        Options options = serviceClient.getOptions();  
        EndpointReference targetEPR = new EndpointReference("http://127.0.0.1:7001/TestAxis2/services/HelloServer?wsdl");  
        options.setTo(targetEPR);  
        // 在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名,也就是<wsdl:definitions>元素的targetNamespace属性值  
        QName opAddEntry = new QName("http://demo.com.axis","sayHello");  
        // 参数,如果有多个,继续往后面增加即可,不用指定参数的名称  
        Object[] opAddEntryArgs = new Object[] {"ltf" };  
        // 返回参数类型,这个和axis1有点区别  
        // invokeBlocking方法有三个参数,其中第一个参数的类型是QName对象,表示要调用的方法名;  
        // 第二个参数表示要调用的WebService方法的参数值,参数类型为Object[];  
        // 第三个参数表示WebService方法的返回值类型的Class对象,参数类型为Class[]。  
        // 当方法没有参数时,invokeBllocking方法的第二个参数值不能是null,而要使用new Object[]{}  
        // 如果被调用的WebService方法没有返回值,应使用RPCServiceClient类的invokeRobust方法,  
        // 该方法只有两个参数,它们的含义与invokeBlocking方法的前两个参数的含义相同  
        Class[] classes = new Class[] { String.class };  
        System.out.println(serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0]);   
    } catch (Exception e) {  
        e.printStackTrace();  
    }  
    }   
}


进入http://localhost:8080/TestAxis2/services/HelloServer?wsdl就可验证是否发布成功了。
  • 大小: 39.5 KB
  • 大小: 44.7 KB
  • 大小: 44.6 KB
  • 大小: 17.9 KB
  • 大小: 89.1 KB
  • 大小: 60.1 KB
  • 大小: 21 KB
1
2
分享到:
评论

相关推荐

    WebService大讲堂之Axis2

    WebService大讲堂之Axis2 WebService大讲堂之Axis2 WebService大讲堂之Axis2 WebService大讲堂之Axis2 WebService大讲堂之Axis2 WebService大讲堂之Axis2

    WebService大讲堂之Axis2.pdf

    Axis2是Apache软件基金会提供的一款高性能、轻量级的WebService引擎,它是在Axis1.x的基础上重新设计的产物,不仅支持SOAP1.1和SOAP1.2协议,还扩展了对RESTful WebService的支持,以及Spring框架和JSON技术的集成。...

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

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

    WebService大讲堂之Axis2系列教程

    【WebService大讲堂之Axis2系列教程】是一个深入讲解 Axis2 这个流行WebService引擎的教程,适合初学者。Axis2作为一个强大的工具,它在多种场景下被广泛应用,包括发布服务端Java类的方法以供不同客户端调用,促进...

    axis2例子 webservice axis2 示例

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

    WebService大讲堂之Axis2及其它web service资料

    【WebService大讲堂之Axis2及其它Web Service资料】 在IT行业中,Web Service是一种通过互联网进行应用程序间交互的标准技术。它允许不同的系统之间共享数据和服务,不受编程语言、操作系统或硬件平台的限制。本...

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

    AXIS2远程调用WebService是Java开发者在进行分布式服务交互时常用的一种技术。本文将详细介绍如何使用Eclipse集成开发环境和AXIS2框架创建并调用WebService。首先,我们需要准备以下基础工具: 1. Eclipse IDE:这...

    WebService大讲堂之Axis2,多个实例

    本系列教程将涵盖从基础到高级的Axis2使用,着重于如何在无需配置文件的情况下,使用Axis2开发和发布WebService。 首先,Axis2的下载和安装是使用这一技术的首要步骤。Axis2的最新版本可以通过官方网址下载,分别...

    axis2+spring webservice

    标题中的“axis2+spring webservice”指的是使用Apache Axis2框架与Spring框架集成来开发Web服务。Apache Axis2是Java环境中广泛使用的Web服务引擎,它提供了高性能、灵活且可扩展的架构。Spring框架则是一个全面的...

    webservice大讲堂之axis2.rar

    webservice大讲堂之axis2.rar webservice大讲堂之axis2.rar webservice大讲堂之axis2.rar webservice大讲堂之axis2.rar webservice大讲堂之axis2.rar webservice大讲堂之axis2.rar

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

    首先,让我们理解Spring与Axis2集成的基础知识。Spring框架提供了一个服务导向架构(SOA)的支持,允许开发者轻松地创建和消费Web服务。而Axis2是Apache软件基金会的一个项目,专门用于处理Web服务的生成、部署和...

    SpringBoot开发WebService之Axis示例

    2. **添加Axis依赖**:在`pom.xml`文件中,我们需要添加Axis的相关依赖。这包括`axis`, `axis-saaj`, 和 `axis-wsdl4j`等。 3. **创建Web服务接口**:定义一个Java接口,这个接口代表我们的Web服务。接口中定义了将...

    axis2webservice接口例子

    标题中的“axis2webservice接口例子”指的是使用Apache Axis2框架创建的一个Web服务接口实例。Apache Axis2是Java平台上的一款强大的Web服务开发工具,它提供了高效、灵活且可扩展的环境来构建和部署Web服务。这个...

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

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

    webService 生成插件axis2-idea-plugin-1.7.8

    webService 生成插件axis2- idea-plugin-1.7.8

    webservice大讲堂axis2

    详细webservice大讲堂axis2

    部署WebService(eclipse-axis2)

    - **配置Axis2**:正确配置Axis2路径是基础。 - **编写服务端代码**:实现具体的业务逻辑。 - **部署服务端**:通过Eclipse插件快速部署。 - **测试服务端**:验证服务端是否正常工作。 - **构建客户端**:根据WSDL...

Global site tag (gtag.js) - Google Analytics