gpt4 book ai didi

java - 编写 jax-ws web 服务并生成无 XSD 的 WSDL

转载 作者:搜寻专家 更新时间:2023-10-30 21:29:58 26 4
gpt4 key购买 nike

我在 java 上为 tomcat 应用程序服务器编写了一个简单的 JAX-WS Web 服务。

我有一个接口(interface)和一个实现类:
界面

@WebService(name = "myWs")
@SOAPBinding(style = Style.RPC)
public interface IMyWs {
@WebMethod(operationName = "getUser")
Response getUser(@WebParam(name = "phone", mode = Mode.IN) String phone);

}


实现

@WebService(endpointInterface = "ge.mari.IMyWs")
public class MyWs implements IMyWs {
@Override
public Response getUser(String phone) {
// SOME CODE
return response;
}
}

我的问题是,在我的 wsdl 文件中,响应类是在 xsd 文件中定义的。
这是我的wsdl文件的片段

<types>
<xsd:schema>
<xsd:import namespace="http://ws.mari.ge/" schemaLocation="http://localhost:8080/MyServcie/MyWs?xsd=1">
</xsd:import>
</xsd:schema>
</types>

如何让 Web 服务在 WSDL 文件而不是单独的 XSD 文件中生成所有类型?
我应该更改任何配置或向我的 Web 服务添加一些注释吗?

最佳答案

您可以让 JAX-WS 将生成的模式插入到您的 WSDL 文件中,方法是使用

-inlineSchemas

命令行开关。 [1]

如果您在项目中使用 Maven,则可以配置 JAX-WS maven 插件以对执行配置中的 inlineSchemas 配置元素执行相同的操作,如下所示:[2]

<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>SomeId</id>
<goals>
<goal>wsgen</goal>
</goals>
<phase>prepare-package</phase>
<configuration>
<sei>some.class.Name</sei>
<genWsdl>true</genWsdl>
<keep>true</keep>
<resourceDestDir>some/target/dir</resourceDestDir>
<inlineSchemas>true</inlineSchemas>
</configuration>
</execution>
</executions>
</plugin>

无需更改您的 Java 类。

[1] http://jax-ws.java.net/nonav/2.2.1/docs/wsgen.html

[2] http://jax-ws-commons.java.net/jaxws-maven-plugin/wsgen-mojo.html

关于java - 编写 jax-ws web 服务并生成无 XSD 的 WSDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17399718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com