One way to pass parameters to you Axis2 service:
- write a
tag inside your services.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file was auto-generated from WSDL -->
<!-- by the Apache Axis2 version: 1.3 Built on : Aug 10, 2007 (04:45:47 LKT) -->
<serviceGroup>
<service name="xxxxxxx" class="MyServiceLifeCycleImpl">
....
<parameter name="jdbcConnectionString">jdbc:derby:c:/demoderby2b;create=true;user=a;password=b;</parameter>
<parameter name="jdbcDriver">org.apache.derby.jdbc.EmbeddedDriver</parameter>
...
</service>
</serviceGroup>
- Write a ServiceLifeCycle class
public class MyServiceLifeCycleImpl implements ServiceLifeCycle {
private Log log = LogFactory.getLog(MyServiceLifeCycleImpl.class);
public void startUp(ConfigurationContext confCtx, AxisService axisService) {
try {
String jdbcConnectionString = (String) axisService.getParameterValue("jdbcConnectionString");
String jdbcDriver = (String) axisService.getParameterValue("jdbcDriver");
Class.forName(jdbcDriver).newInstance();
Connection connection = DriverManager
.getConnection(jdbcConnectionString);
axisService.addParameter("jdbcConnection", connection);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
....
- Add init method to your service
....
private ServiceContext serviceContext;
public void init(ServiceContext serviceContext) {
this.serviceContext = serviceContext;
}
....
- Access the parameter jdbcConnection from your service through serviceContext
....
Connection conn = (Connection) serviceContext.getAxisService()
.getParameterValue("jdbcConnection");
....