我实际上正在开发一个基于 spring 3.2.8 和 cxf 2.7.11 并在 weblogic 12.1 (JDK 1.7.0_21) 和 tomcat 8 上运行的项目。 Web 服务是带有 CXF 注释的代码优先代码。
当我尝试在 weblogic 或 Tomcat 上运行我的 Web 应用程序时,出现此异常:
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
java.util.Map is an interface, and JAXB can't handle interfaces.
this problem is related to the following location:
at java.util.Map
at private java.util.Map fr.grdf.distribution.ws.interfaces.metier.approvisionnement.jaxws_asm.GetEotpCodeArticleByZddResponse._return
at fr.grdf.distribution.ws.interfaces.metier.approvisionnement.jaxws_asm.GetEotpCodeArticleByZddResponse
在 weblogic 上,我只需要使用 weblogic.xml 配置文件中的那些行配置类路径,一切正常:
<prefer-application-packages>
<package-name>org.apache.cxf.*</package-name>
</prefer-application-packages>
但是在tomcat上,我卡在了这个错误上。 tomcat webapp 和 weblogic webapp 之间类路径的唯一区别是为 tomcat 添加了 asm-3.3.1.jar(我得到一个“java.lang.NoClassDefFoundError”:org/objectweb/asm/ClassWriter execption)
有人有想法吗?
提前致谢
网络服务端点:
@WebService
@GZIP
public interface IApproLogWebService {
@WebMethod
Map<Long, String> getEotpCodeArticleByZdd(@WebParam(name = "articles") List<ArticleFicheApproLog> articles,
@WebParam(name = "zdd") Zdd zdd)
最佳答案
我通过将 jabx-xjc 从 2.2.1.1 版本升级到 2.2.10-b140310.1920 版本解决了这个问题。
问候。
关于tomcat - CXF tomcat 8 weblogic java.util.Map是接口(interface),JAXB无法处理接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25847514/