我们有复杂的javaee应用程序。该应用程序有许多EJB 3 bean,其中一些EJB作为WebServices(JAX-WS 2.1)公开。整个应用程序被打包到一个EAR中,所有EJB bean都在ejb-jar.xml描述符中定义。在WebLogic中部署WebServices的问题12.2.1.1
我们已经从WebLogic 12.1.1.0(JDK6)切换到了WebLogic 12.2.1.1(JDK8 u77)。我们有WebServices不再部署在WebLogic 12.2.1.1中的问题(然而EAR部署没有错误) - 在WebLogic 12.1.1.0中,我们没有WebServices部署(相同EAR)的这个问题。
我们通过一个简单的测试EAR(一个EJB和一个展示为WebService的EJB和一个helloworld EJB)成功测试了WebLogic 12.2.1.1上的WebService部署。如果我们在复杂的应用程序中创建相同的helloworld WebService(部署在WebLogic 12.2.1.1上),那么这个WebService不会部署,但是EJB已成功部署。
我们可以在WebLogic 12.2.1.1中记录/调试WebServices的部署吗?我们想找到为什么我们的Web服务不会部署在新的WebLogic中的原因。
[解决方案]
剥离下来,只需要依赖我们发现,问题出在@WebService标注EAR后。
如果我们有用@WebService注解的类或接口,而不是EAR EJB模块的一部分,例如EAR的lib文件夹中的JAR依赖项,然后Web Services将不会部署在WebLogic 12.2.1.1中。
现在的问题是,如果此WebLogic 12.2.1.x行为是打算的,并且可以以某种方式覆盖(标准或weblogic)描述符或者是此WebLogic 12.2.1.x错误?
中找到它是一种功能,而不是一个错误。 “Java EE编程模型对Web容器使用JDK注释功能,例如EJB,servlet,Web应用程序和JSP” http://docs.oracle.com/middleware/12212/wls/WLPRG/annotate_dependency.htm #WLPRG257 这意味着只有耳朵顶层的罐子被标注扫描。对我来说,解决方案是将包含service-endpoint-interface的jar放在顶层。 – weberjn