珠穆郎码疯@ 2019-07-03 16:14 采纳率: 0%
浏览 1099

各位大佬回答一下,JaxWsDynamicClientFactory这种客户端调用方法我用java来调c写的webservice接口能调吗?

  • JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();这种方式
  • 有博客上说这种动态调用的方式只能java调用java写的webservice接口?
  • 这种动态调用方式是什么语言写的都能调用吗?
  • 还有这种方法是不是比那种**wsimport**导入的方法简单的多?
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-10 17:46
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    是的,你可以使用Java来调用C编写的Webservice接口。JaxWsDynamicClientFactory是一个用于动态创建和管理WSDL(Web Services Description Language)客户端的类。

    关于你的问题,“这种方式有博客上说这种动态调用的方式只能java调用java写的webservice接口?”这个说法并不完全正确。在很多情况下,你确实可以使用Java调用C编写的Webservice接口。但是,这取决于具体的实现细节。例如,在某些情况下,可能需要通过JNI或其它方式将C代码转换为Java代码,并且才能进行调用。

    至于“这种方法是不是比那种wsimport导入的方法简单的多?”这个问题,答案也是否定的。虽然wsimport是一种引入依赖项的方法,但它通常比直接使用JaxWsDynamicClientFactory更复杂,因为它涉及到更多的配置和错误处理。

    以下是一个简单的示例,展示如何使用JaxWsDynamicClientFactory从C编写的Webservice接口调用:

    public class Main {
        public static void main(String[] args) throws Exception {
            // 创建一个JaxWsDynamicClientFactory实例
            JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
    
            // 使用dcef实例创建一个动态生成的WSDL客户端
            WsdlAddress wsdlAddress = dcf.create(new String[]{"http://example.com/some-service?wsdl"});
    
            // 使用wsdlAddress创建一个新的WSDL服务对象
            Service service = new Service(wsdlAddress);
    
            // 创建一个远程操作对象,表示要调用的服务中的某个方法
            RemoteOperation remoteOperation = service.getRemoteOperation("MyService");
    
            // 调用remoteOperation的方法
            MyObject result = (MyObject) remoteOperation.call(new Object[]{}, new TypeToken<MyObject>() {}.getType());
    
            System.out.println(result);
        }
    }
    

    请注意,这段代码只是一个基本的例子,实际的调用可能会根据具体的需求有所不同。

    评论

报告相同问题?