DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
Currently, I've only found the endorsed on way to make cxf work with websphere: adding jars to the 'endorsed' folder. (Note: this has been validated against Websphere6.1.0.0)
...
And then restart the Websphere server. (Because we changed the endorsed folder, we need to restart it to make it take effect).
| Tip |
|---|
Please make sure your classpath doesn't have the servlet-2.5 library, since WebSphere6.1 is servlet-2.4 compliant! |
...
If you put your wsdl4j-1.6.1 jar in $WAS_HOME/java/jre/lib/endorsed, all your application applications will depend on your version of wsdl4j. Another solution is to create a new class loader in your server which loads before parent class loader, create a shared library with your version of wsdl4j, and add this shared library to your new class loader. This version of wsdl4j will only be available for your specific server and not affect applications running in other servers.
...
| Note |
|---|
This guide requires heavy customization of the OC4J configuration. Bear in mind that some of steps presented below are either undocumented or unsupported. We strongly advice you to do perform those steps on in a separate container, dedicated exclusively for CXF. |
...
Oracle OC4J comes with highly customized XML stack by Oracle including SAX, StAX, JAXP, JAX-WS, SAAJ, WSDL and few others. All of those frameworks are Oralce Oracle proprietary implementations in the OC4J distribution. This gives Oracle really good interoperability between their products (e.g. Database) and assures interoperability with all Oracle portfolio. However but it makes it rather hard to introduce something which needs different implementation of above APIs (like CXF).
| Tip | ||||||
|---|---|---|---|---|---|---|
OC4J 10.1.3 comes with preliminary implementation of JAX-WS (JSR-181) but this implementation is somewhat limited only to top-down scenario, with very limited customization (lack of JAXB 2.0 etc.). |
Configuration overview
Few A few components need to be customized in OC4J towards to allow CFX integration:
Unfortunately all of those , these components have to be configured in different parts of OC4J.
Oracle OC4J class loading
Key part toward successful CXF integration with A key part of successfully integrating CXF into OC4J is to understand how does class loaders work in OC4J. Basically when When starting OC4J there are generally three stages where customization could occur:
- When Virtual Machine boot
- When OC4J boot
- When CXF (aplicationapplication) boot
Last Customizing in the last step is quite easy to achieve - basically OC4J has quite powerful class loader and an easy customization console. Unfortunately there are some components that could not be configured this way. They are configured during OC4J boot. Unfortunately one of this is OC4J webservices stack (located in $ORACLE_HOME/webservices/lib).
...
Before start please download Apache CXF 2.0.1 6 or better and Xerces 2.8.1
Preparing stax-api
Remove If you use a version of CXF that includes stax-api.jar that in turn include the QName class, remove javax.xml.namespace.QName from the stax-api shiped shipped with CXF. Oracle apparently has it already in $ORACLE_HOME/j2ee/home/lib/jax-qname-namespace.jar.
| Anchor | ||||
|---|---|---|---|---|
|
...
Replace the Oracle XML parser with Xerces
Basic The basic idea behind how to do this is described in details detail here
Create OC4J shared libary library named cxf.foundation and put therefill it with:
- xercesImpl.jar (from Xerces distribution)
- xml-apis-1.2.02.jar (from CXF-distribution)
- xalan-2.7.0.jar (ditto)
- geronimo-ws-metadata_2.0_spec-1.1.1.jar (ditto)
Note When building Your application DO NOT INCLUDE THOSE COMPONENTS again.
...
OC4J has preliminary support for JAX-WS, unfortunately this means that during OC4J boot there are loaded it loads outdated JAX-WS APIs and implementation by Oracle. This occurs even before shared libraries comes into action, on at a very early stage of OC4J boot. Boot-time OC4J libraries are configured in boot.xml file in $ORACLE_HOME/j2ee/home/oc4j.jar bootstrap jar. To get rid of this:
...
Additionally Oracle provides it's own implementation of WSDL functinality functionality which conflicts with wsdl4j.jar. To get rid of this add -Xbootclasspath/p:"<path to wsdlj>/wsdl4j-1.6.1.jar;<path to jaxb2>/jaxb-api-2.0.jar" option to JVM parametrs (either in command line running OC4J standalone or in OPMN).
...