Java 具有Web服务的客户端/服务器。如何在项目设置中处理生成的源?
我正在开发一个简单的客户机-服务器应用程序 服务器端是一个web服务,通过一个wsdl文件很好地部署到应用服务器 我的另一个项目客户机(假设它是用Swing编写的)调用这些web服务方法。因为这些web服务方法使用自定义对象(不仅仅是字符串int等等),所以我需要从web服务项目生成源文件 在我的Maven POM文件中,处理生成的源文件的最佳方法是什么Java 具有Web服务的客户端/服务器。如何在项目设置中处理生成的源?,java,web-services,maven,wsdl,Java,Web Services,Maven,Wsdl,我正在开发一个简单的客户机-服务器应用程序 服务器端是一个web服务,通过一个wsdl文件很好地部署到应用服务器 我的另一个项目客户机(假设它是用Swing编写的)调用这些web服务方法。因为这些web服务方法使用自定义对象(不仅仅是字符串int等等),所以我需要从web服务项目生成源文件 在我的Maven POM文件中,处理生成的源文件的最佳方法是什么 在客户端项目上调用wsimport 在服务器项目上调用wsimport,然后以某种方式复制到客户端项目 在客户端项目上调用wsgen 调用服务
按照我的理解,wsgen从web服务java类(用@Webservice注释)创建所有生成的文件,而wsimport从wsdl文件中创建这些文件。对于Maven,您可以使用插件来实现这一点。 请参见下面的示例,了解如何从Java代码转换wsdl
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-java2ws-plugin</artifactId>
<version>2.6.3</version>
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${version.cxf}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-simple</artifactId>
<version>${version.cxf}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>process-classes</id>
<phase>process-sources</phase>
<configuration>
<className>com.Mycompany.name.work</className>
<outputFile>${project.build.sourceDirectory}/wsdl/work.wsdl</outputFile>
<genWsdl>true</genWsdl>
<verbose>true</verbose>
</configuration>
<goals>
<goal>java2ws</goal>
</goals>
</execution>
</executions>
</plugin>
org.apache.cxf
cxf-java2ws-plugin
2.6.3
org.apache.cxf
cxf rt前端jaxws
${version.cxf}
org.apache.cxf
cxf rt前端简单
${version.cxf}
进程类
过程源
com.Mycompany.name.work
${project.build.sourceDirectory}/wsdl/work.wsdl
真的
真的
java2ws
还有一种方法可以实现这一点。您可以预先从WSDL生成类,并将其转换为jar文件。在该jar的pom文件中添加java依赖项。
如果希望更频繁地更改WSDl位置,可以更改服务类以从属性文件读取Web服务Url。这样,您也可以灵活地更改WSDL位置。通常,我使用的工具是一个为您的WSDL构建库(Jar)的项目
然后我会将其部署到我的Maven存储库中,并在POM文件中创建一个依赖项以将其拉入。您的意思是您将有3个项目。客户机/服务器,然后是一个只生成WSDL工件并将其打包到jar中的项目?通常是的。两者都需要引用相同的工件。以模块化的名义,它们应该是独立的。这样,您就可以将您的API(WSDL)免费分发给您可能需要的任何其他项目。在这里,我们可以将其与MVC风格的角色分离做一个相当紧密的类比。WSDL gen对象是您的模型。客户端是您的视图,服务器是您的控制器。