当前位置: 首页 > 知识库问答 >
问题:

CXF wsdl2java:wsdl中没有地址位置:端口标签

齐英韶
2023-03-14

使用CXF(Spring中的配置)创建Web服务时,我生成的WSDL缺少端口标签中的地址位置。这对客户端来说是有问题的。如果CXF用于客户端创建,则必须在客户端代码中以编程方式设置endpoint。如果使用Axis(我的Web服务的消费者希望能够使用Axis 1),则会出现错误

Error in generating Java from WSDL:  java.io.IOException: 
Emitter failure.  Cannot find endpoint address in port FooServiceSOAPPort 
in service FooServiceLocator

我希望有以下子元素,而不是被迫使用CXF或Axis2创建客户端并在客户端代码中手动设置endpoint:

<soap:address location="http://localhost:9000/services/foo"/>

标签下方<代码>

如果我将WSDL保存为本地文件并手动添加上面的行,则使用Axis生成客户端时不会出现任何问题,客户端不需要手动设置endpoint,一切都正常。那么,如何使地址位置行出现在CXF生成的WSDL中?

这是我的Spring配置(相关endpoint标记):

<jaxws:endpoint xmlns:hel="http://user.services/"
    name="Foo"
    address="/services/foo"
    implementor="services.foo.FooImpl"/>

这是我的服务界面:

@WebService
public interface Foo {
    String method1(String arg1);
}

和实施

@WebService(endpointInterface = "services.foo.Foo")
@SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL)
public class FooImpl implements Foo {
    @WebMethod(operationName = "method1")
    public String method1(String arg1) {
        return "OK";
    }
}

共有1个答案

包永新
2023-03-14

我的第一个问题是如何生成WSDL文件。使用Ant或Maven。如果您使用Maven,以下将解决您的问题。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-java2ws-plugin</artifactId>
            <version>${cxf.version}</version>
            <executions>
                <execution>
                    <id>process-classes</id>
                    <phase>process-classes</phase>
                    <configuration>
                        <className>com.stackoverflow.cxf.HelloWorld</className>
                        <genWsdl>true</genWsdl>
                        <verbose>true</verbose>
                        <address>http://localhost:9999/blah/blah</address>
                    </configuration>
                    <goals>
                        <goal>java2ws</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

在<代码>

  <wsdl:service name="HelloWorldService">
    <wsdl:port name="HelloWorldPort" binding="tns:HelloWorldServiceSoapBinding">
      <soap:address location="http://localhost9999/blah/blah"/>
    </wsdl:port>
  </wsdl:service>
 类似资料:
  • 我是k8s的初学者,我按照k8s官方文档创建了一个hel-world入口,但我无法使其工作。首先,我创建了一个服务,就像我得到的教程一样: 因此,我可以通过浏览器访问我的服务: 到现在为止,一直都还不错。然而,我被困在入口部分。因此,我创建了类似于教程的入口: 甚至在用我的minikube ip配置了/etc/hosts之后:192.168.99.102 hello world。信息,当我卷曲它或

  • 问题内容: 我们正在寻找一种快速准确的方法来根据访问者的IP获取访问者的位置。 我们已经尝试过ipinfodb.com,但在调用API时,其API使我们的网站严重滞后。 您还建议其他哪些服务? 问题答案: 获取Geo-IP信息 请求地理IP服务器(netip.de)进行检查,并返回IP所在的位置(主机,州,国家/地区,城镇)。

  • 我正在考虑Rchart/传单创建一个闪亮的应用程序房屋销售在我的县。任何时候都有几百套房子出售。想要为所有人绘制街道地址到地理位置的地图(lat/long)并在地图上显示它们。所以,我正在寻找一个r包,服务或数据库,可以映射街道地址到地理位置。

  • 这就是我有点困惑的地方。 我在服务器端拿到的地址,有客户端连接的WiFi网络的公有地址(这是我预期的),还有一些端口号,基于我对NATs的理解,应该和客户端实际使用的端口号不一样,是用来翻译地址的。 但是,如果我在客户端上使用了getsockname()函数,则得到的端口号与服务器给出的端口号相同。

  • 配置Apache监听指定的地址和端口。 概述 相关模块 相关指令 core mpm_common <VirtualHost> Listen Apache启动时,会绑定本机上的地址和端口,然后等待请求的进入。默认情况下,它会监听本机的所有地址。但是,当需要监听特定的地址或端口或地址与端口的组合,或者需要对不同的IP地址、主机名、端口作出不同的响应(如使用虚拟主机)时,就必须明确指定。 Listen指

  • 我正在将minikube作为docker映像运行。我试图使用Nodeport将我的服务公开给外部世界。 这是我的yaml文件。 搜索了大量关于nodePort的信息,我们需要节点ip才能访问该服务。我可以使用minikube service docker hello world svc访问我的服务——url,它为我提供了访问服务的urlhttp://127.0.0.1:52526但此处的端口号与n