Details
-
Bug
-
Status: Open
-
Critical
-
Resolution: Unresolved
-
1.5.1
-
None
-
None
-
JDK 1.6.0_23, Windows
Description
Exception:
16:56:01,973 INFO [STDOUT] [ERROR]
java.lang.NullPointerException
at org.apache.rampart.policy.RampartPolicyData.getOptimizePartsConfig(RampartPolicyData.java:952)
at org.apache.rampart.MessageBuilder.build(MessageBuilder.java:165)
at org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:64)
at org.apache.axis2.engine.Phase.invoke(Phase.java:318)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:254)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:419)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:43)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:173)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:144)
I think the problem is a missing rampart-config in the WSDL...but this additional configuration isn't really necessary for MTOM Policy together with UserName Token Security Policy. (no message signature or encryption involved)
Possible Bugfix - it works in our case with this small change:
In org.apache.rampart.MessageBuilder, Line 161, additional Null check:
/*
- Checking whether MTOMSerializable is there. If so set optimizeElement.
- */
if(rpd.isMTOMSerialize()){
msgCtx.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
RampartConfig rampartConfig = rpd.getRampartConfig();
if (rampartConfig != null)Unknown macro: { OptimizePartsConfig config = rampartConfig.getOptimizeParts(); if (config != null) { MessageOptimizer.optimize(msgCtx.getEnvelope(), config.getExpressions(), config.getNamespaces()); } }}