如何部署 apache CXF rest app to Weblogic
来源:互联网 发布:指南针炒股软件评价 编辑:程序博客网 时间:2024/05/22 04:50
Weblogic 只支持默认的JAX-RS 2.0 API 和 Jersey 。 不支持Apache CXF rest api .
如果不使用如下步骤就会出现这个Exception:
weblogic.application.ModuleException: java.lang.LinkageError: ClassCastException: attempting to castzip: .../user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/myCXFApp/o6f99o/war/WEB-INF/lib/javax.ws.rs-api-2.1.jar!/javax/ws/rs/ext/RuntimeDelegate.class to jar:file:weblogic/oracle_common/modules/javax.ws.rs.javax.ws.rs-api.jar!/javax/ws/rs/ext/RuntimeDelegate.class
- 创建 weblogic.xml 设置 filter classloader 从war 包中加载 class.
<?xml version="1.0" encoding="UTF-8"?><wls:weblogic-web-app xmlns:wls="http://www.bea.com/ns/weblogic/weblogic-application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsdhttp://xmlns.oracle.com/weblogic/weblogic-web-apphttp://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd"> <wls:weblogic-version>12.2.1</wls:weblogic-version> <container-descriptor> <show-archived-real-path-enabled>true</show-archived-real-path-enabled> <prefer-web-inf-classes>false</prefer-web-inf-classes> <wls:prefer-application-resources> <wls:resource-name>META-INF/services/*</wls:resource-name> <wls:resource-name>javax.jws.*</wls:resource-name> <wls:resource-name>javax.ws.rs.*</wls:resource-name> <wls:resource-name>com.ctc.wstx.*</wls:resource-name> <wls:resource-name>javax.wsdl.*</wls:resource-name> <wls:resource-name>org.apache.cxf.*</wls:resource-name> <wls:resource-name>org.aspectj.*</wls:resource-name> <wls:resource-name>org.slf4j</wls:resource-name> <wls:resource-name>org.apache.*</wls:resource-name> <wls:resource-name>org.springframework.*</wls:resource-name> <wls:resource-name>com.fasterxml.jackson.*</wls:resource-name> </wls:prefer-application-resources> <wls:prefer-application-packages> <wls:package-name>javax.jws.*</wls:package-name> <wls:package-name>javax.ws.rs.*</wls:package-name> <wls:package-name>com.ctc.wstx.*</wls:package-name> <wls:package-name>javax.wsdl.*</wls:package-name> <wls:package-name>org.apache.cxf.*</wls:package-name> <wls:package-name>org.aspectj.*</wls:package-name> <wls:package-name>org.slf4j</wls:package-name> <wls:package-name>org.apache.*</wls:package-name> <wls:package-name>org.springframework.*</wls:package-name> <wls:package-name>com.fasterxml.jackson.*</wls:package-name> </wls:prefer-application-packages> </container-descriptor></wls:weblogic-web-app>
- 在 WEB-INF/lib 目录中 加入所有apache cxf 所需的 jar 包。
必须有: jax-rs api cxf-rt-frontend-jaxrs.jar - 下面就是 做一个 CLASSloader magic 了。
先部署一个 简单的 纯 JAX-RS api 实现的rest app. 部署成功以后 设置 这个应用的 部署顺序为 50.(小于100的一个数字都可以)。 - 部署 CXF 应用程序。
阅读全文