Java JAX-WS服务实现类名定制不起作用

Java JAX-WS服务实现类名定制不起作用,java,web-services,maven,jax-ws,wsimport,Java,Web Services,Maven,Jax Ws,Wsimport,我正在使用Maven为web服务生成实现代码。最初,此代码是使用其他东西(可能是Eclipse中的向导)从WSDL和模式生成的。jaxws-maven插件生成的服务实现类名是MyService\u myservicesoapimpl。最初生成时,实现类名为MyService\u SOAPImplementation。我猜Eclipse使用的向导允许用户选择实现类的名称。我尝试使用sei元素,但它不起作用。以下是我的POM中wsimport插件的一个片段: <plugin> &

我正在使用Maven为web服务生成实现代码。最初,此代码是使用其他东西(可能是Eclipse中的向导)从WSDL和模式生成的。jaxws-maven插件生成的服务实现类名是MyService\u myservicesoapimpl。最初生成时,实现类名为MyService\u SOAPImplementation。我猜Eclipse使用的向导允许用户选择实现类的名称。我尝试使用sei元素,但它不起作用。以下是我的POM中wsimport插件的一个片段:

<plugin>
    <groupId>org.jvnet.jax-ws-commons</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>2.3</version>
    <executions>
        <execution>
                <phase>generate-sources</phase>
                <id>generateMyServiceFromWSDL</id>
                <goals>
                    <goal>wsimport</goal>
                </goals>
                <configuration>
                    <genJWS>true</genJWS>
                    <bindingDirectory>${basedir}/src/main/bindings</bindingDirectory>
                    <bindingFiles>
                        <bindingFile>otherSchema.episode</bindingFile>
                    </bindingFiles>
                    <wsdlDirectory>${basedir}/src/main/resources/wsdl</wsdlDirectory>
                    <wsdlFiles>
                        <wsdlFile>MyService.wsdl</wsdlFile>
                    </wsdlFiles>
                    <wsdlLocation>${project.basedir}/src/main/resources/wsdl/MyService.wsdl</wsdlLocation>
                    <sourceDestDir>${project.basedir}/src/main/java</sourceDestDir>
                    <sei>com.myCompany.MyService_SOAPImplementation</sei>
                    <xdonotoverwrite>true</xdonotoverwrite>
                    <xnocompile>true</xnocompile>
                    <xdebug>true</xdebug>
                    <verbose>true</verbose>
                    <target>2.0</target>
                </configuration
            </execution>
            ...
但这似乎仍然没有任何效果-wsimport仍在以MyService_MyServiceSOAPImpl的形式生成实现。

尝试更改您的

<jaxws:bindings node="wsdl:definitions/wsdl:portType[@name='MyService']">

请注意,节点路径的第二部分是服务,而不是端口类型。您将使用portType来定制服务接口,而不是实现

另一方面,需要注意的是,JAX-WS绑定似乎需要按照WSDL保存在自己的XML文件中,而不包含在JAXB绑定中

有些人可能会发现这里的JAX-WS绑定列表很有用:

尝试更改您的

<jaxws:bindings node="wsdl:definitions/wsdl:portType[@name='MyService']">

请注意,节点路径的第二部分是服务,而不是端口类型。您将使用portType来定制服务接口,而不是实现

另一方面,需要注意的是,JAX-WS绑定似乎需要按照WSDL保存在自己的XML文件中,而不包含在JAXB绑定中


有些人可能会发现这里的JAX-WS绑定列表很有用:

如果这对某些人有帮助,则需要对OPs bindings.xml文件进行两项更改才能使其正常工作:

MGE已经建议了第一个更改—将Xpath中的wsdl:portType更改为wsdl:service 类名的命名空间必须是“jaxws”,因此 更改为:

<jaxws:class name="MyServiceSOAPImpl"/>


如果这对某人有帮助,则需要对OPs bindings.xml文件进行两项更改以使其正常工作:

MGE已经建议了第一个更改—将Xpath中的wsdl:portType更改为wsdl:service 类名的命名空间必须是“jaxws”,因此 更改为:

<jaxws:class name="MyServiceSOAPImpl"/>

<jxb:class name="MyServiceSOAPImpl"></jxb:class>