You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Grégoire Rolland <GR...@husson-info.fr> on 2007/09/06 10:51:47 UTC

MTOM and Rampart problem (Out Of Memory)

Hi All, 

 

I have a file download Service (I use this tutorial http://www.wso2.org/library/1675), which have a memory problem.

It works with file not larger than 10mb, without tuning JVM memory.

When I disengage Rampart module (both client and server), all works fine with larger file !! But when Rampart is engaged I get an OutOfMemoryError on the client side for file larger than 10mb.

 

For a file of 74MB, I have to set client JVM Memory to 728MB !!! 

 

The version I use : Axis2 1.2, Rampart 1.2, Tomcat/5.5, jsdk_1.5_10

 

I upgrade Axis and Rampart to version 1.3, there is the same behavior.

 

Here is the stack trace for more precision :

 

Thread [main] (Suspended (exception OutOfMemoryError))     

      String.<init>(char[], int, int) line: not available  

      StringBuffer.toString() line: not available    

      TextHelper.toString(InputStream) line: 36      

      TextImpl.getText() line: 316 

      DOMStAXWrapper.getText() line: 356 

      StAXSOAPModelBuilder(StAXBuilder).createOMText(OMContainer, int) line: 245  

      StAXSOAPModelBuilder(StAXBuilder).createOMText(int) line: 216    

      StAXSOAPModelBuilder(StAXOMBuilder).next() line: 179 

      SOAPEnvelopeImpl(OMNodeImpl).build() line: 318 

      SOAPEnvelopeImpl(OMElementImpl).build() line: 614    

      Axis2Util.getSOAPEnvelopeFromDOMDocument(Document, boolean) line: 200  

      RampartEngine.process(MessageContext) line: 174      

      RampartReceiver.invoke(MessageContext) line: 85      

      Phase.invoke(MessageContext) line: 292   

      AxisEngine.invoke(MessageContext, boolean) line: 212 

      AxisEngine.receive(MessageContext) line: 132   

      OutInAxisOperationClient.handleResponse(MessageContext) line: 336      

      OutInAxisOperationClient.send(MessageContext) line: 389    

      OutInAxisOperationClient.executeImpl(boolean) line: 211    

      OutInAxisOperationClient(OperationClient).execute(boolean) line: 163   

      DatabaseUpdaterClient(AbstractUpdaterClient).retrieveFile(String) line: 221 

      DataBaseUpdater.update(boolean) line: 42 

      TCXUpdater.main(String[]) line: 116 

 

This is the service code (method getFile) :

 

public abstract class Updater implements IUpdater {

      private static final String FILE_ELEMENT_NAME = "file";

 

      private static final String OM_NAMESPACE_NAME = "update";

 

      private static final String OM_NAMESPACE = "http://updater.webservices.hussoninfo.fr <http://updater.webservices.hussoninfo.fr/> ";

 

      private String directory;

 

      private String fileName;

 

      public void setFileName(final String in_fileName) {

            fileName = in_fileName;

      }

 

      protected abstract String getRootPath();

 

      private String getUpdatePath() {

            return getRootPath() + File.separator + directory;

      }

 

      public OMElement getFile(final OMElement in_e)

      {

            OMFactory factory = OMAbstractFactory.getOMFactory();

            OMNamespace ns = factory.createOMNamespace(OM_NAMESPACE, OM_NAMESPACE_NAME);

            OMElement fileElement = OMAbstractFactory.getOMFactory().createOMElement(FILE_ELEMENT_NAME, ns);

            DataHandler dataHandler = new DataHandler(new FileDataSource(getUpdatePath() + File.separator + fileName));

            OMText textData = factory.createOMText(dataHandler, true);

            fileElement.addChild(textData);

            return fileElement;

      }

}

 

This is the service.xml (see service DatabaseUptader)

 

<serviceGroup>

      

      <service name="InitService" class="fr.hussoninfo.webservices.lifecycle.InitService">

          <description>Service d'initialisation</description>

          <parameter name="ServiceClass">fr.hussoninfo.webservices.lifecycle.InitService</parameter>

          <parameter name="ServiceTCCL">composite</parameter>

          <parameter name="load-on-startup">true</parameter>

      </service>

      

      <service name="DatabaseUpdater">

            <description>Service de mise a jour de base de donnees</description>

            <messageReceivers>

                  <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />

                  <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />

            </messageReceivers>

            <parameter name="ServiceClass" locked="false">fr.hussoninfo.webservices.updater.IUpdater</parameter>

            <parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier</parameter>

            <parameter name="SpringBeanName">databaseUpdater</parameter>

            <parameter name="enableMTOM" locked="false">true</parameter>

      

            <module ref="rampart" /> 

 

            <operation name="getFile">

                  <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

                  <actionMapping>urn:getFile</actionMapping>

            </operation>

 

            <wsp:Policy wsu:Id="UTOverTransport"

                  xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"

                  xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">

 

                  <wsp:ExactlyOne>

                        <wsp:All>

                             <sp:TransportBinding

                                   xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

                                   <wsp:Policy>

                                         <sp:TransportToken>

                                               <wsp:Policy>

                                                     <sp:HttpsToken

                                                           RequireClientCertificate="false" />

                                               </wsp:Policy>

                                         </sp:TransportToken>

                                         <sp:AlgorithmSuite>

                                               <wsp:Policy>

                                                     <sp:Basic256 />

                                               </wsp:Policy>

                                         </sp:AlgorithmSuite>

                                         <sp:Layout>

                                               <wsp:Policy>

                                                     <sp:Lax />

                                               </wsp:Policy>

                                         </sp:Layout>

                                   </wsp:Policy>

                             </sp:TransportBinding>

                             <sp:SignedSupportingTokens

                                   xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

                                   <wsp:Policy>

                                         <sp:UsernameToken

                                               sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />

                                   </wsp:Policy>

                             </sp:SignedSupportingTokens>

 

                             <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">

                                   <ramp:passwordCallbackClass>fr.hussoninfo.webservices.security.PasswordCallback</ramp:passwordCallbackClass>

                             </ramp:RampartConfig>

                             

                        </wsp:All>

                  </wsp:ExactlyOne>

            </wsp:Policy>

      </service>

</serviceGroup>

 

 

And here the client (method retreiveFile) : 

 

public abstract class AbstractUpdaterClient {

 

      private static final String URN_GET_FILE = "urn:getFile";

      private static final String METHOD_GET_FILE = "getFile";

      private static final String WEBSERVICES_NAMESPACE = "http://updater.webservices.hussoninfo.fr <http://updater.webservices.hussoninfo.fr/> ";

      private static final String RAMPART_MODULE_NAME = "rampart";

 

      private String domaine = null;

 

      private ConfigurationContext cc = null;

 

      private Policy policy = null;

 

      public AbstractUpdaterClient(final ConfigurationContext in_cc, final Policy in_policy, final String in_domaine)

      {

            domaine = in_domaine;

            cc = in_cc;

            policy = in_policy;

      }

 

      protected abstract String getUpdateService();

      

      private String getEPRString()

      {

            return "http:// <http://> " + domaine + "/TCXUpdater/services/" + getUpdateService();

      }

 

      public void retrieveFile(final String in_outputFile) throws IOException

      {

         ServiceClient serviceClient2 = new ServiceClient(cc, null);

            

        EndpointReference targetEPR2 = new EndpointReference(getEPRString());

 

        OMFactory fac = OMAbstractFactory.getOMFactory();

        OMNamespace omNs = fac.createOMNamespace(WEBSERVICES_NAMESPACE, METHOD_GET_FILE);

        

        OMElement method = fac.createOMElement(METHOD_GET_FILE, omNs);

 

        serviceClient2.engageModule(RAMPART_MODULE_NAME);

        

        Options options2 = serviceClient2.getOptions();

        options2.setTo(targetEPR2);

        options2.setAction(URN_GET_FILE);

        options2.setProperty(RampartMessageData.KEY_RAMPART_POLICY,  policy);

        options2.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);

 

        MessageContext messageContext = new MessageContext();

        messageContext.setServiceContext(serviceClient2.getServiceContext());

        SOAPFactory soapFactory = OMAbstractFactory.getSOAP12Factory();

        SOAPEnvelope envelope = soapFactory.getDefaultEnvelope();

        envelope.getBody().addChild(method);

        serviceClient2.addHeadersToEnvelope(envelope);

        messageContext.setEnvelope(envelope);

        OperationClient operationClient = serviceClient2.createClient(ServiceClient.ANON_OUT_IN_OP);

        operationClient.addMessageContext(messageContext);

        operationClient.execute(true);

        MessageContext responseMc = operationClient

                .getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

 

        DataHandler attachement = responseMc.getAttachment(

                  responseMc.getAttachmentMap().getAllContentIDs()[1]);

        

        InputStream is = new BufferedInputStream(attachement.getDataSource().getInputStream());

        OutputStream os = new BufferedOutputStream(new FileOutputStream(in_outputFile));

        

        IOUtils.copy(is, os);

        

        os.close();

        is.close();

        

        os = null;

        is = null;

      }

}

 

MTOM caching is enabled on client side (axis2.xml fragment):

 

<parameter name="cacheAttachments" locked="false">true</parameter>

<parameter name="attachmentDIR" locked="false">c:/tcx/cache</parameter>

<parameter name="sizeThreshold" locked="false">1024</parameter>

 

Policy for client side :

 

<wsp:Policy wsu:Id="UTOverTransport"

      xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"

      xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">

      <wsp:ExactlyOne>

            <wsp:All>

                  <sp:TransportBinding

                        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

                        <wsp:Policy>

                             <sp:TransportToken>

                                   <wsp:Policy>

                                         <sp:HttpsToken

                                               RequireClientCertificate="false" />

                                   </wsp:Policy>

                             </sp:TransportToken>

                             <sp:AlgorithmSuite>

                                   <wsp:Policy>

                                         <sp:Basic256 />

                                   </wsp:Policy>

                             </sp:AlgorithmSuite>

                             <sp:Layout>

                                   <wsp:Policy>

                                         <sp:Lax />

                                   </wsp:Policy>

                             </sp:Layout>

                        </wsp:Policy>

                  </sp:TransportBinding>

                  <sp:SignedSupportingTokens

                        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">

                        <wsp:Policy>

                             <sp:UsernameToken

                                    sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />

                        </wsp:Policy>

                  </sp:SignedSupportingTokens>

            </wsp:All>

      </wsp:ExactlyOne>

</wsp:Policy>

 

And the method to get the Policy :

 

StAXOMBuilder builder = new StAXOMBuilder(CONF_POLICY_XML); policy =  PolicyEngine.getPolicy(builder.getDocumentElement());

        

RampartConfig rc = new RampartConfig();

rc.setUser("user");

rc.setPwCbClass(PasswordCallback.class.getName());

policy.addAssertion(rc);

 

 

I hope someone can help me.

Thanks in advance

 

Grégoire Rolland

 


Re: MTOM and Rampart problem (Out Of Memory)

Posted by Thilina Gunarathne <cs...@gmail.com>.
Please log a JIRA with Rampart
(https://issues.apache.org/jira/browse/RAMPART).. Looks like a bug in
Rampart to me..

thanks,
Thilina

On 9/6/07, Grégoire Rolland <GR...@husson-info.fr> wrote:
>
>
>
>
> Hi All,
>
>
>
> I have a file download Service (I use this tutorial
> http://www.wso2.org/library/1675), which have a memory
> problem.
>
> It works with file not larger than 10mb, without tuning JVM memory.
>
> When I disengage Rampart module (both client and server), all works fine
> with larger file !! But when Rampart is engaged I get an OutOfMemoryError on
> the client side for file larger than 10mb.
>
>
>
> For a file of 74MB, I have to set client JVM Memory to 728MB !!!
>
>
>
> The version I use : Axis2 1.2, Rampart 1.2, Tomcat/5.5, jsdk_1.5_10
>
>
>
> I upgrade Axis and Rampart to version 1.3, there is the same behavior.
>
>
>
> Here is the stack trace for more precision :
>
>
>
> Thread [main] (Suspended (exception OutOfMemoryError))
>
>       String.<init>(char[], int, int) line: not available
>
>       StringBuffer.toString() line: not available
>
>       TextHelper.toString(InputStream) line: 36
>
>       TextImpl.getText() line: 316
>
>       DOMStAXWrapper.getText() line: 356
>
>
> StAXSOAPModelBuilder(StAXBuilder).createOMText(OMContainer,
> int) line: 245
>
>       StAXSOAPModelBuilder(StAXBuilder).createOMText(int)
> line: 216
>
>       StAXSOAPModelBuilder(StAXOMBuilder).next() line: 179
>
>       SOAPEnvelopeImpl(OMNodeImpl).build() line: 318
>
>       SOAPEnvelopeImpl(OMElementImpl).build() line: 614
>
>       Axis2Util.getSOAPEnvelopeFromDOMDocument(Document,
> boolean) line: 200
>
>       RampartEngine.process(MessageContext) line: 174
>
>       RampartReceiver.invoke(MessageContext) line: 85
>
>       Phase.invoke(MessageContext) line: 292
>
>       AxisEngine.invoke(MessageContext, boolean) line: 212
>
>       AxisEngine.receive(MessageContext) line: 132
>
>
> OutInAxisOperationClient.handleResponse(MessageContext)
> line: 336
>
>       OutInAxisOperationClient.send(MessageContext) line: 389
>
>       OutInAxisOperationClient.executeImpl(boolean) line:
> 211
>
>
> OutInAxisOperationClient(OperationClient).execute(boolean)
> line: 163
>
>
> DatabaseUpdaterClient(AbstractUpdaterClient).retrieveFile(String)
> line: 221
>
>       DataBaseUpdater.update(boolean) line: 42
>
>       TCXUpdater.main(String[]) line: 116
>
>
>
> This is the service code (method getFile) :
>
>
>
> public abstract class Updater implements IUpdater {
>
>       private static final String FILE_ELEMENT_NAME = "file";
>
>
>
>       private static final String OM_NAMESPACE_NAME = "update";
>
>
>
>       private static final String OM_NAMESPACE =
> "http://updater.webservices.hussoninfo.fr";
>
>
>
>       private String directory;
>
>
>
>       private String fileName;
>
>
>
>       public void setFileName(final String in_fileName) {
>
>             fileName = in_fileName;
>
>       }
>
>
>
>       protected abstract String getRootPath();
>
>
>
>       private String getUpdatePath() {
>
>             return getRootPath() + File.separator + directory;
>
>       }
>
>
>
>       public OMElement getFile(final OMElement in_e)
>
>       {
>
>             OMFactory factory = OMAbstractFactory.getOMFactory();
>
>             OMNamespace ns = factory.createOMNamespace(OM_NAMESPACE,
> OM_NAMESPACE_NAME);
>
>             OMElement fileElement =
> OMAbstractFactory.getOMFactory().createOMElement(FILE_ELEMENT_NAME,
> ns);
>
>             DataHandler dataHandler = new DataHandler(new
> FileDataSource(getUpdatePath() + File.separator + fileName));
>
>             OMText textData = factory.createOMText(dataHandler, true);
>
>             fileElement.addChild(textData);
>
>             return fileElement;
>
>       }
>
> }
>
>
>
> This is the service.xml (see service DatabaseUptader)
>
>
>
> <serviceGroup>
>
>
>
>       <service name="InitService"
> class="fr.hussoninfo.webservices.lifecycle.InitService">
>
>           <description>Service d'initialisation</description>
>
>           <parameter
> name="ServiceClass">fr.hussoninfo.webservices.lifecycle.InitService</parameter>
>
>           <parameter
> name="ServiceTCCL">composite</parameter>
>
>           <parameter
> name="load-on-startup">true</parameter>
>
>       </service>
>
>
>
>       <service name="DatabaseUpdater">
>
>             <description>Service de mise a jour de base de
> donnees</description>
>
>             <messageReceivers>
>
>                   <messageReceiver
> mep="http://www.w3.org/2004/08/wsdl/in-only"
> class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"
> />
>
>                   <messageReceiver
> mep="http://www.w3.org/2004/08/wsdl/in-out"
> class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"
> />
>
>             </messageReceivers>
>
>             <parameter name="ServiceClass"
> locked="false">fr.hussoninfo.webservices.updater.IUpdater</parameter>
>
>             <parameter
> name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier</parameter>
>
>             <parameter
> name="SpringBeanName">databaseUpdater</parameter>
>
>             <parameter name="enableMTOM" locked="false">true</parameter>
>
>
>
>             <module ref="rampart" />
>
>
>
>             <operation name="getFile">
>
>                   <messageReceiver
> class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
>
>
> <actionMapping>urn:getFile</actionMapping>
>
>             </operation>
>
>
>
>             <wsp:Policy wsu:Id="UTOverTransport"
>
>
> xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
>
>
> xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
>
>
>
>                   <wsp:ExactlyOne>
>
>                         <wsp:All>
>
>                              <sp:TransportBinding
>
>
> xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
>
>                                    <wsp:Policy>
>
>
> <sp:TransportToken>
>
>                                                <wsp:Policy>
>
>
> <sp:HttpsToken
>
>
> RequireClientCertificate="false" />
>
>
> </wsp:Policy>
>
>                                          </sp:TransportToken>
>
>
> <sp:AlgorithmSuite>
>
>                                                <wsp:Policy>
>
>
> <sp:Basic256 />
>
>
> </wsp:Policy>
>
>
> </sp:AlgorithmSuite>
>
>                                          <sp:Layout>
>
>                                                <wsp:Policy>
>
>
> <sp:Lax />
>
>
> </wsp:Policy>
>
>                                          </sp:Layout>
>
>                                    </wsp:Policy>
>
>                              </sp:TransportBinding>
>
>                              <sp:SignedSupportingTokens
>
>
> xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
>
>                                    <wsp:Policy>
>
>                                          <sp:UsernameToken
>
>
> sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"
> />
>
>                                    </wsp:Policy>
>
>                              </sp:SignedSupportingTokens>
>
>
>
>                              <ramp:RampartConfig
> xmlns:ramp="http://ws.apache.org/rampart/policy">
>
>
> <ramp:passwordCallbackClass>fr.hussoninfo.webservices.security.PasswordCallback</ramp:passwordCallbackClass>
>
>                              </ramp:RampartConfig>
>
>
>
>                         </wsp:All>
>
>                   </wsp:ExactlyOne>
>
>             </wsp:Policy>
>
>       </service>
>
> </serviceGroup>
>
>
>
>
>
> And here the client (method retreiveFile) :
>
>
>
> public abstract class AbstractUpdaterClient {
>
>
>
>       private static final String URN_GET_FILE = "urn:getFile";
>
>       private static final String METHOD_GET_FILE = "getFile";
>
>       private static final String WEBSERVICES_NAMESPACE =
> "http://updater.webservices.hussoninfo.fr";
>
>       private static final String RAMPART_MODULE_NAME = "rampart";
>
>
>
>       private String domaine = null;
>
>
>
>       private ConfigurationContext cc = null;
>
>
>
>       private Policy policy = null;
>
>
>
>       public AbstractUpdaterClient(final ConfigurationContext in_cc, final
> Policy in_policy, final String in_domaine)
>
>       {
>
>             domaine = in_domaine;
>
>             cc = in_cc;
>
>             policy = in_policy;
>
>       }
>
>
>
>       protected abstract String getUpdateService();
>
>
>
>       private String getEPRString()
>
>       {
>
>             return "http://" + domaine + "/TCXUpdater/services/" +
> getUpdateService();
>
>       }
>
>
>
>       public void retrieveFile(final String in_outputFile) throws
> IOException
>
>       {
>
>          ServiceClient serviceClient2 = new ServiceClient(cc, null);
>
>
>
>         EndpointReference targetEPR2 = new
> EndpointReference(getEPRString());
>
>
>
>         OMFactory fac = OMAbstractFactory.getOMFactory();
>
>         OMNamespace omNs = fac.createOMNamespace(WEBSERVICES_NAMESPACE,
> METHOD_GET_FILE);
>
>
>
>         OMElement method = fac.createOMElement(METHOD_GET_FILE, omNs);
>
>
>
>         serviceClient2.engageModule(RAMPART_MODULE_NAME);
>
>
>
>         Options options2 = serviceClient2.getOptions();
>
>         options2.setTo(targetEPR2);
>
>         options2.setAction(URN_GET_FILE);
>
>
> options2.setProperty(RampartMessageData.KEY_RAMPART_POLICY,
>  policy);
>
>
> options2.setProperty(Constants.Configuration.ENABLE_MTOM,
> Constants.VALUE_TRUE);
>
>
>
>         MessageContext messageContext = new MessageContext();
>
>
> messageContext.setServiceContext(serviceClient2.getServiceContext());
>
>         SOAPFactory soapFactory =
> OMAbstractFactory.getSOAP12Factory();
>
>         SOAPEnvelope envelope = soapFactory.getDefaultEnvelope();
>
>         envelope.getBody().addChild(method);
>
>         serviceClient2.addHeadersToEnvelope(envelope);
>
>         messageContext.setEnvelope(envelope);
>
>         OperationClient operationClient =
> serviceClient2.createClient(ServiceClient.ANON_OUT_IN_OP);
>
>         operationClient.addMessageContext(messageContext);
>
>         operationClient.execute(true);
>
>         MessageContext responseMc = operationClient
>
>
> .getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
>
>
>
>         DataHandler attachement = responseMc.getAttachment(
>
>                   responseMc.getAttachmentMap().getAllContentIDs()[1]);
>
>
>
>         InputStream is = new
> BufferedInputStream(attachement.getDataSource().getInputStream());
>
>         OutputStream os = new BufferedOutputStream(new
> FileOutputStream(in_outputFile));
>
>
>
>         IOUtils.copy(is, os);
>
>
>
>         os.close();
>
>         is.close();
>
>
>
>         os = null;
>
>         is = null;
>
>       }
>
> }
>
>
>
> MTOM caching is enabled on client side (axis2.xml fragment):
>
>
>
> <parameter name="cacheAttachments" locked="false">true</parameter>
>
> <parameter name="attachmentDIR"
> locked="false">c:/tcx/cache</parameter>
>
> <parameter name="sizeThreshold" locked="false">1024</parameter>
>
>
>
> Policy for client side :
>
>
>
> <wsp:Policy wsu:Id="UTOverTransport"
>
>
> xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
>
>
> xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
>
>       <wsp:ExactlyOne>
>
>             <wsp:All>
>
>                   <sp:TransportBinding
>
>
> xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
>
>                         <wsp:Policy>
>
>                              <sp:TransportToken>
>
>                                    <wsp:Policy>
>
>                                          <sp:HttpsToken
>
>
> RequireClientCertificate="false" />
>
>                                    </wsp:Policy>
>
>                              </sp:TransportToken>
>
>                              <sp:AlgorithmSuite>
>
>                                    <wsp:Policy>
>
>                                          <sp:Basic256 />
>
>                                    </wsp:Policy>
>
>                              </sp:AlgorithmSuite>
>
>                              <sp:Layout>
>
>                                    <wsp:Policy>
>
>                                          <sp:Lax />
>
>                                    </wsp:Policy>
>
>                              </sp:Layout>
>
>                         </wsp:Policy>
>
>                   </sp:TransportBinding>
>
>                   <sp:SignedSupportingTokens
>
>
> xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
>
>                         <wsp:Policy>
>
>                              <sp:UsernameToken
>
>
> sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"
> />
>
>                         </wsp:Policy>
>
>                   </sp:SignedSupportingTokens>
>
>             </wsp:All>
>
>       </wsp:ExactlyOne>
>
> </wsp:Policy>
>
>
>
> And the method to get the Policy :
>
>
>
> StAXOMBuilder builder = new StAXOMBuilder(CONF_POLICY_XML); policy =
> PolicyEngine.getPolicy(builder.getDocumentElement());
>
>
>
> RampartConfig rc = new RampartConfig();
>
> rc.setUser("user");
>
> rc.setPwCbClass(PasswordCallback.class.getName());
>
> policy.addAssertion(rc);
>
>
>
>
>
> I hope someone can help me.
>
> Thanks in advance
>
>
>
> Grégoire Rolland
>
>


-- 
Thilina Gunarathne  -  http://www.wso2.com - http://thilinag.blogspot.com

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org