我可以基于带注释的@WebService类/接口自动发现jaxws:beans.xml的端点吗?

时间:2012-08-16 10:06:55

标签: java spring maven annotations cxf

我用:

创建了一个cxf / spring项目

mvn archetype:create -DarchetypeGroupId = org.apache.cxf.archetype -DarchetypeArtifactId = cxf-jaxws-javafirst

生成的项目有一个注释为@WebService的HelloWorld.java接口,以及一个用endpointInterface = mypackage.HelloWorld注释的HelloWorldImpl.java。

有一个包含以下内容的beans.xml文件:

<jaxws:endpoint
   id="helloWorld"
   implementor="mypackage.HelloWorldImpl"
   address="/HelloWorld" />

如果我想添加更多服务,看起来我应该继续在beans.xml中添加新的端点。由于这些类已经注释为@WebService,为什么它不能在某个包/搜索路径中自动发现任何新服务?有什么方法可以配置这个项目吗?

基本上,我只是想避免重复自己。信息已经存在于注释中,因此我不希望每次添加服务时都必须编辑其他文件。

如果我删除beans.xml中的jaxws:endpoint标记,然后删除mvn install tomcat:run,则localhost:8080 / myArtifactId只显示一个页面,说明没有定义服务。

1 个答案:

答案 0 :(得分:1)

当您使用CXF时,您应该知道您添加的所有端点都由使用Spring上下文查找它们的CXFServlet管理。 beans.xml是Spring上下文的配置文件。因此,如果从该文件中删除<jaxws:endpoint/>节点,则Spring上下文因此CXFServlet将无法找到您的服务端点。