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

JAVA 代理方式实现接口实例化,WebService的方式实现远程方法调用

    博客分类:
  • java
 
阅读更多
接口工厂
/**
 * <pre>
 * Title: 接口工厂
 * </pre>
 */
public abstract class AbstractInterfaceFactory {
    protected static final Logger logger = Logger
            .getLogger(AbstractInterfaceFactory.class.getName());
    
    public static AbstractInterfaceFactory getInstance(){
        return new DefaultInterfaceFactory();
    }
    
    
    /** 私有化, */
    protected AbstractInterfaceFactory(){}
    
    
    public <T> T getWebService(Class<T> oldInterface) {
        InterfaceHandler intr = new InterfaceHandler(this);

        Object bufferedInter = Proxy.newProxyInstance(getClass()
                .getClassLoader(), new Class[] { oldInterface }, intr);

        return (T) bufferedInter;
    }

    /** 子类实现 */
    protected abstract  Object remoteCall(String methodName, Object[] args);

    /** 代理类 */
    private static final class InterfaceHandler implements InvocationHandler {
        private AbstractInterfaceFactory factory;

        public InterfaceHandler(AbstractInterfaceFactory factory) {
            this.factory = factory;
        }

        
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            String remoteMethodName = method.getName();
            logger.info("开始调用接口:" + remoteMethodName);

            Object rst = factory.remoteCall(remoteMethodName, args);

            logger.info("完成调用");
            return rst;
        }

    }
 
    /** 静态工厂的默认实现 */
    private static final class DefaultInterfaceFactory extends AbstractInterfaceFactory {
        protected Object remoteCall(String methodName, Object[] args) {
            logger.info("远程方法调用中.....");
            return methodName;
        }
    }
}


实际接口
/**
 * 
 * <pre>
 * Title: 任意定义的两个接口
 * </pre>
 */
public interface MyInterface {
    public String getVersion();
    
    public String doJob();
}


测试类
public class testInterfaceFactory {
    public static void main(String[] args) {
        AbstractInterfaceFactory factory = AbstractInterfaceFactory.getInstance();
        MyInterface intr = factory.getWebService(MyInterface.class);
        System.out.println("获取版本:" + intr.getVersion());
        
        intr = factory.getWebService(MyInterface.class);
        System.out.println("doJob:" + intr.doJob());
    }
}


运用:远程调用WebService时,可以考虑使用。
分享到:
评论

相关推荐

    java调用webservice接口方法

    Java调用WebService接口方法是Java开发中常见的任务,尤其在分布式系统和跨平台通信中扮演着重要角色。这里我们主要探讨使用Apache Axis库来实现这一功能。Apache Axis是一款开源工具,它提供了Java到SOAP(简单对象...

    java调用webservice接口方法.rar

    Java调用WebService接口是Web应用程序开发中的常见任务,主要用于实现不同系统间的远程通信和数据交换。在本资料中,我们重点关注Java如何与基于SOAP(Simple Object Access Protocol)的WebService进行交互。 1. *...

    asp.net通过WebService调用Java接口全过程

    - 在ASP.NET的后台代码(如`index.aspx.cs`)中,实例化WebService客户端对象,例如`localhost.HelloService local = new localhost.HelloService();`。 - 调用服务方法,例如`String s=local.getTestString("测试...

    delphi调用Java webservice实例

    Delphi是一款强大的Windows应用程序开发工具,而Java WebService则是一种基于标准的,跨平台的远程调用技术。下面将详细阐述这个主题。 一、Java WebService简介 Java WebService是通过SOAP(Simple Object Access ...

    JAVA调用webservice并解析xml

    4. **调用服务方法**:通过服务代理,你可以像调用本地方法一样调用Web服务的远程方法,并传递必要的参数。 ```java String result = port.someWebServiceMethod(param1, param2); ``` 5. **解析XML响应**:Web...

    webservice 调用接口实例+归属地查询

    3. **实例化代理类**:创建代理类的实例,通常需要提供服务的URL。在Java中,这可能类似`MobileCodeService service = new MobileCodeService()`,然后通过`service.getMobileCodePort()`得到服务接口。 4. **调用...

    java调用webservice工程

    - **实例化代理类**:创建代理类的实例,这个实例代表了远程的WebService服务。 - **调用服务方法**:通过代理类的实例调用Web服务提供的方法,传递参数并接收返回值。 **3. 使用JAX-WS的步骤** - **定义服务...

    java 通过axis调用天气预报的webservice

    4. **编写Java代码**:使用生成的Java客户端 stubs,你可以实例化服务代理并调用对应的方法。例如,调用获取天气预报的方法,可能需要传入城市名称等参数。 5. **处理响应**:WebService调用后,你会接收到一个响应...

    java调用webservice实例

    2. **初始化WebService调用**: - `url`变量存储了Web Service的URL,即服务的入口地址。 - `soapaction`变量存储了SOAP Action值,通常用于标识服务端应调用的方法。 3. **创建服务对象**:通过`new Service()`...

    java axis 调用webservice服务端

    3. **实例化客户端和服务端代理**:使用生成的stub类,实例化服务端的代理对象。这个对象代表了与远程WebService的连接。 4. **调用服务方法**:通过代理对象,我们可以像调用本地方法一样调用远程服务的方法,传入...

    Java WebService 简单实例 方式二(axis1直接调用方式)

    这个过程涵盖了从设计服务接口、实现服务逻辑、生成WSDL文件、部署服务到创建客户端进行远程调用的整个流程。通过这种方式,开发者可以更加深入地理解Java Web Service的工作机制及其在实际项目中的应用价值。希望本...

    java程序调用.net/c#的webservice

    5. **实例化代理类并调用服务**: 创建Web服务客户端代理类的实例,然后调用对应的方法,传递参数。例如,如果Web服务有一个名为`Calculate`的方法,我们可以在Java中这样调用: ```java MyWebService service =...

    Java+Axis2调用Web Services 网络接口

    总的来说,Java和Axis2的结合提供了一种强大而灵活的方式来调用Web服务,允许开发者轻松地集成远程功能到自己的应用程序中。通过理解这些概念和实践,你可以更好地利用Web服务接口,提升应用的扩展性和互操作性。

    Java Webservice调用方式详解

    Java WebService调用方式详解主要涉及两种方法:Axis和SOAP。这两种方式都是用来与Web服务进行交互,调用远程服务的方法。以下将详细介绍这两种方法。 1. Axis方式调用: Axis是Apache的一个开源项目,它提供了一...

    .net调用java WebService

    2. **实例化客户端对象**:使用生成的代理类创建客户端对象,并通过该对象调用远程服务的方法。 - **代码示例**: ```csharp var client = new ServiceReference1.StudentServicePortTypeClient(); string ...

    C#调用JavaWebService(客户端)

    - **实例化代理类**:生成的代理类代表了对WebService的访问,我们需要实例化这个类,并设置必要的配置,如终结点地址。 - **调用服务方法**:通过代理类的对象调用JavaWebService中的公开方法,传入参数并接收...

    Java调用WebService(客户端)

    在Java开发中,有时我们需要从客户端调用远程的WebService服务以获取或传递数据。本文将详细介绍如何使用Java进行WebService客户端的调用,并提供HttpGet、HttpPost、HttpSoap以及Documentation四种调用方式的示例。...

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

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

    java调用webservice wsdl源码

    总结,Java调用WebService主要通过解析WSDL源码生成客户端代码,然后实例化服务代理并调用其方法实现通信。不同的工具库如Apache CXF、Axis2和JAX-WS提供了方便的方式来处理这一过程,让开发者能够专注于业务逻辑,...

    Flex调用Webservice及java程序

    然后,我们可以实例化`WebService`类,并将WSDL URL作为参数传递。最后,通过调用服务方法并监听事件来发送请求和处理响应。 - **通过AMF**:对于更高效的通信,我们可以使用BlazeDS或LCDS(LiveCycle Data ...

Global site tag (gtag.js) - Google Analytics