
0.9
WSO2 Mercury is a WS-ReliableMessaging specification implementation that uses Apache Axis2/Java as the SOAP engine.

1.5
WSO2 Identity Solution is a set of Relying Party components and an Identity Provider to enable CardSpace and OpenID authentication.

1.0
WSO2 WSF/Spring integrates Apache Axis2 into Spring and provides a Code First approach to create Web Services for the Spring user.

1.2.1
WSO2 WSF/PHP, a PHP extension used to provide and consume Web services in PHP.

1.0.2
WSO2 Mashup Server is a platform for creating, deploying, and consuming Web services Mashups.

2.2.1
WSO2 WSAS is an enterprise ready Web services engine powered by Apache Axis2. It is a lightweight, high performing platform for SOA

1.0
WSO2 Registry is a Web 2.0 style registry and repository for storing resources and metadata.

1.6
WSO2 ESB is a lightweight, XML and Web services centric ESB, based on Apache Synapse and Axis2.

1.0.0
WSO2 WSF C++, a binding of WSO2 WSF/C into C++ is an extension for consuming Web Services in C++.

0.6
WSO2 User Manager is a library enabling user authentication and authorization in applications to be handled in a homogeneous manner.

1.2.0
WSO2 WSF/C is a framework based on Apache Axis2/C, Rampart/C and Sandesha2/C for providing and consuming Web services in C.

1.0.0
WSO2 WSF/Ruby, a binding of WSO2 WSF/C into Ruby is an extension for consuming Web Services in Ruby.

1.0.0
WSO2 WSF/Perl, a binding of WSO2 WSF/C into Perl is a Perl extension for consuming Web Services in Perl.
Rampart configuration
I have also been trying to engage Rampart for web service exposed using wsf-spring. Since i could not find any concrete documentation for Rampart integration, I tried adding rampart module and security phase to axis2Confog.xml (abstract below..).
- added rampart module
<property name="modules">
<list>
<value>addressing</value>
<value>rampart</value>
</list>
</property>
- added handlers for the security phase
<!-- Security phase definition -->
<bean id="axis2SecurityPhase" class="org.wso2.spring.ws.beans.PhaseBean">
<property name="name" value="Security"/>
<property name="handlers">
<list>
<ref bean="securityInHandler"/>
<ref bean="securityOutHandler"/>
</list>
</property>
</bean>
<!-- Security In handler -->
<bean id="securityInHandler" class="org.wso2.spring.ws.beans.HandlerBean">
<property name="name" value="SecurityInHandler"/>
<property name="clazz" value="org.apache.rampart.handler.WSDoAllReceiver"/>
<property name="orderPhase" value="Security"/>
</bean>
<!-- Security Out handler -->
<bean id="securityOutHandler" class="org.wso2.spring.ws.beans.HandlerBean">
<property name="name" value="SecurityOutHandler"/>
<property name="clazz" value="org.apache.rampart.handler.WSDoAllSender"/>
<property name="orderPhase" value="Security"/>
</bean>
- added the following bean ref to axis2InPhaseOrder, axis2InFaultPhaseOrder, axis2OutPhaseOrder and axis2OutFaultPhaseOrder
<ref bean="axis2SecurityPhase"/>
My spring context had the following configuration:
<beans>
<import resource="axis2Config.xml"/>
<bean id="pmsDatabaseService" class="com.service.PMSDatabaseServiceImpl">
<property name="pmsDao" ref="pmsDao"/>
</bean>
<bean id="services" class="org.wso2.spring.ws.WebServices">
<property name="services">
<list>
<bean id="PMSDatabase" class="org.wso2.spring.ws.SpringWebService">
<property name="serviceBean" ref="pmsDatabaseService"/>
<property name="serviceName" value="PMSDatabase"/>
<property name="serviceDescription" value="Service for PMS database update"/>
<property name="modules">
<list>
<value>addressing</value>
<value>rampart</value>
</list>
</property>
<property name="parameters">
<map>
<entry key="InflowSecurity" value-ref="inflowConfiguration"/>
<entry key="OutflowSecurity" value-ref="outflowConfiguration"/>
</map>
</property>
</bean>
</list>
</property>
</bean>
<bean id="inflowConfiguration" class="org.apache.rampart.handler.config.InflowConfiguration">
<property name="actionItems" value="UsernameToken"/>
<property name="passwordCallbackClass" value="com.security.PWCBHandler"/>
</bean>
<bean id="outflowConfiguration" class="org.apache.rampart.handler.config.OutflowConfiguration">
<property name="actionItems" value="UsernameToken"/>
<property name="user" value="pmsUser"/>
<property name="passwordCallbackClass" value="com.security.PWCBHandler"/>
</bean>
</beans>
I also enagaged Rampart and addressing module at the client side (stub generated by axis2) following sample 11 from the Rampart distribution.
When the web service was invoked, the SOAP request had all the relevant security headers but the SOAP response had 'Configuration error' returned as axis fault.
After further investigation, I found that the error was coming from rampart code while reading the parameters from service configuration (ParameterElement was null).
So I was not sure if the security configuration I did for the web service in spring context was right. Any help will be greatly appreciated.
Thanks, Benu