Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用web服务。需要缺少的链接吗_Java_Web Services_Hyperlink - Fatal编程技术网

Java 调用web服务。需要缺少的链接吗

Java 调用web服务。需要缺少的链接吗,java,web-services,hyperlink,Java,Web Services,Hyperlink,有人可以在下面的代码中填写缺少的链接吗 第一种方式: web服务接口文件是HappyService JaxWSProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.getInterceptors().add(new LoggingInInterceptor()); factory.getInterceptors().add(new LoggingOutInterceptor()); //MISSING LINK. Wh

有人可以在下面的代码中填写缺少的链接吗

第一种方式:

web服务接口文件是HappyService

JaxWSProxyFactoryBean factory = new JaxWsProxyFactoryBean();

factory.getInterceptors().add(new LoggingInInterceptor());
factory.getInterceptors().add(new LoggingOutInterceptor());

//MISSING LINK. Where does HappyService.class come from? I don't have it
factory.setServiceClass(HappyService.class);

factory.setAddress("http://......../happyService");

//Again how do I get HappyService?
HappyService client = (HappyService) factory.create();
第二种方式:

String UrlString = "Your WSDL URL";   
   String nameSpaceUri = "urn:Foo";
   String serviceName = "MyHelloService";
   String portName = "HelloIFPort";

   URL helloWsdlUrl = new URL(UrlString);

   ServiceFactory serviceFactory = ServiceFactory.newInstance();

   Service helloService =
            serviceFactory.createService(helloWsdlUrl, 
            new QName(nameSpaceUri, serviceName));

   //Where did dynamicproxy.HelloIF come from? This code won't compile as that file does not exist anywhere
   dynamicproxy.HelloIF myProxy = 
            (dynamicproxy.HelloIF) 
            helloService.getPort(
            new QName(nameSpaceUri, portName), 
            dynamicproxy.HelloIF.class); 

        System.out.println(myProxy.sayHello("Buzz"));

任何对这些接口类来自何处以及它们是如何生成的有线索的人,请告诉我。看起来,我可以进行web服务调用的唯一方法是手工编写SOAP请求,我真的不想这样做,因为它可能会变得非常大并且容易出错。

有许多工具可以从WSDL定义文件生成web服务Java类

您可以尝试,这是此任务的标准Java工具。
另一种可能性是,哪个级别更高。

您需要一个SOAP库,例如。该库将包括用于从wsdl生成Java类的工具。您可以使用生成的代码进行web服务调用。

基于您的第一个示例,我认为您使用的是框架

该框架提供了一个名为的任务,该任务允许从WSDL文件生成类


生成类后,您可以在代码中使用它们以简单的方式调用Web服务,而无需手动构建SOAP消息。这是CXF的工作。

我认为,如果您参考一些java中web服务的基础知识,会有所帮助


您是否使用Web服务框架?根据第一个示例,我认为您使用的是CXF。HappyService类必须是由CXF提供的wsdl2java任务生成的类。你没有生成的类包吗?我注意到你的另一个问题看起来像是这个问题的早期版本。我鼓励您编辑您现有的问题,以添加更多细节,而不是在将来打开一个新的问题。欢迎来到StackOverflow!不,无法访问生成的类。我想做的是在全球范围内调用某人的公共web服务。您有权访问目标web服务的WSDL吗?请看下面我的答案,这可能会对您有所帮助。所以基本上没有办法动态生成这些类?我的意思是,我想部署一个只知道WSDL URL的应用程序来运行web服务。这似乎是一件非常常见的事情。可以想象,您可以在运行时使用Axis2生成一个新客户机,并将这些新类加载到当前JVM中以调用web服务。我以前从未尝试过这样做,甚至没有必要这样做。您还可以尝试编写一个通用客户机来检查WSDL并创建对该服务的一次性调用。基本上,您将执行SOAP库生成器所做的操作,而无需将任何客户端代码写入磁盘。