Weblogic 14c部署EJB WebService提示webservice-description-name不唯一
问题根因
该报错是Weblogic检测到重复的webservice-description配置导致的,虽然你仅定义了一个服务,但Weblogic会先根据MyServiceBean类上的@WebService注解自动生成一个隐式的服务描述配置,你在weblogic-webservices.xml中显式定义的同名配置和自动生成的配置冲突,因此触发唯一性校验报错。
其中最核心的配置错误是:你将webservice-description-name的值填写为@WebService注解的serviceName属性值,但对于EJB发布的Web服务,Weblogic默认生成的webservice-description-name是服务实现类的全限定类名,和serviceName无关。
解决方案
首选解决方式
修改weblogic-webservices.xml中的webservice-description-name参数,将值替换为MyServiceBean类的完整包路径,假设你的类放在com.yourpackage.service目录下,修改后配置如下:
<webservice-description-name>com.yourpackage.service.MyServiceBean</webservice-description-name>
其余weblogic-webservices.xml配置保持不变,重新部署即可。
补充排查方案
如果修改后仍报错,按以下步骤排查:
- 检查EJB JAR包
META-INF目录下的ejb-jar.xml,如果存在任何Web服务相关的配置,直接删除,避免重复注册服务。 - 确认
weblogic-webservices.xml存放在EJB JAR包的META-INF目录下,不要错误放在WEB-INF目录(该路径是WAR包的配置存放路径)。 - 可在
@WebService注解中显式指定targetNamespace,避免隐式生成的命名空间不一致导致的额外冲突:
@WebService( name = "MyServicePort", portName = "MyServicePort", serviceName = "MyService", targetNamespace = "http://yourcustom.namespace/service" )
内容的提问来源于stack exchange,提问作者Ahsan Mahboob Shah
相关产品推荐
相关产品推荐

