axis 2 and rampart integration in web service client

Tania Marinova <[email protected]>
Newsgroups gmane.text.xml.axis.user
Message-ID <[email protected]>
Hello As I'm really new and making my first steps in understanding axis 2 and rampart I will be so pleased and glad if you look at my problem which I will try to explain in the following letter.
 
1. I create a Dynamic web project  with name   'testfn' (and of course I don't forget to  change the dynamic web module version to 2.5 and in configuration  I choose Axis 2 web service)

2. I add to my Dynamic web project these two classes :

testfn .java    and   PWCBHandler.java
here is the code for PWCBHandler.java
public class PWCBHandler implements CallbackHandler{
 
 public  void handle(Callback[] callbacks)  throws  IOException, UnsupportedCallbackException {
 for (int i = 0; i < callbacks.length;i++)
  {
  
  WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
  if (pwcb.getIdentifier().equals("test") && pwcb.getPassword().equals("pass")) 
  {
   return;
  }
  else
  {
   throw new UnsupportedCallbackException(callbacks[i],"Incorrect login/password");
  }
  }
  }
 
3. I right click on testfn.java -> New ->Other -> Web Service
to create my web service
 
4. I don't forget to copy all the jar files from rampart distribution to testfn/ WebContent/WEB_INF/lib
  
     and all  .mar modules into testfn/ WebContent/WEB_INF/modules

5. I change services.xml file so it looks like:
<service name="testfn">
 <module ref="rampart"/>
 <Description>
  Please Type your service description here
 </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">axis2wstest.testfn</parameter>
 
<operation name="testws">
<messageReceiver
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
<!-- Server policy for Username Token with plaintext password -->
<wsp:Policy wsu:Id="UsernameToken" 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:HttpToken RequireClientCertificate="false"/>
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
</wsp:Policy>
</sp:TransportBinding>
<sp:SupportingTokens
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient%22/>
</wsp:Policy>
</sp:SupportingTokens>
<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
<ramp:passwordCallbackClass>axis2wstest.PWCBHandler</ramp:passwordCallbackClass>
</ramp:RampartConfig>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
 
</service>



(so I think I have engaged rampart module and added teh security policy)
6. I right click on testfn -> RUN AS _> Run on Server (and my web service is deployed successfully) 
 
7.  Next I should create Web Service Client - so I choose -
File -> New ->  Other -> Web Service Client
and in Service Definition I paste the url of the wsdl file of SimpleService
( http://localhost:9091/testf/services/testfn?wsdl)

8. I add  testwscl.java class to my web-service client. Here is the code
public class testwscl {

 public static void main(String[] args) throws RemoteException, XMLStreamException {
  ConfigurationContext ctx;
  ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem("C:/Users/gismo2/workspace/testfnclient/WebContent/WEB-INF", null);
  try 
  {
   TestfnStub stub = new TestfnStub(ctx);
       
   Testws cl = new Testws();
   cl.setX(5);
      ServiceClient client =  stub._getServiceClient(); 
      client.engageModule("rampart"); 
   
   Options o = client.getOptions();
     
      
   o.setPassword("pass");
   o.setUserName("test");
   
   client.addHeader(omSecurityElement);
   
   TestwsResponse resp = stub.testws(cl);
    
   System.out.println("Response" + resp.get_return());
   
   
  }
  catch (Exception ex) 
  {
   
   
   ex.printStackTrace();
  }
  
  
    }
 
 

10.  But when I run testwscl  as Java Application it gives me an exception
org.apache.axis2.AxisFault: <faultstring>Missing wsse:Security header in request</faultstring>
 at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:536)
 at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)
 at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
 at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
 at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
 at axis2wstest.TestfnStub.testws(TestfnStub.java:198)
 at axis2wstest.testwscl.main(testwscl.java:76)
 
 
Thank you in advance
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.