Hi,I'm currently experiencing a problem with Alfresco WS and Spring.I need to expose the JBPMEngine (or the Workflow management classes) to Web services, in order to be able to access them from a distant location (a Liferay in another server for instance). So, I created my Web Services (WSDL, WSDD, etc.), and generated the client. This part works, but when I want to use a spring bean in my service, I get a NullPointerException.This is my configuration :server-config.WSDD (part of the existing one I modified) :
<service name="WorkflowWebService" provider="java:RPC" style="wrapped" use="literal">
<documentation>Accesses Workflows via WS</documentation>
<wsdlFile>/wsdl/workflow-service.wsdl</wsdlFile>
<parameter name="springBean" value="workflowService" />
<parameter name="wsdlTargetNamespace" value="http://www.alfresco.org/ws/service/workflow/1.0" />
<parameter name="wsdlServiceElement" value="WorkflowWebServiceService" />
<parameter name="schemaQualified" value="http://www.alfresco.org/ws/service/workflow/1.0" />
<parameter name="wsdlServicePort" value="WorkflowWebService" />
<parameter name="className" value="com.akwa.ws.repo.webservice.workflow.WorkflowWebService" />
<parameter name="wsdlPortType" value="WorkflowWebService" />
<parameter name="typeMappingVersion" value="1.2" />
<operation name="getWorkflows" qname="ns1:getWorkflows" soapAction="" xmlns:ns1="http://www.alfresco.org/ws/service/workflow/1.0" />
<parameter name="allowedMethods" value="getWorkflows" />
</service>
web-services-application-context.xml : …
<bean id="workflowService" class="com.akwa.ws.repo.webservice.workflow.WorkflowWebService" >
<property name="workflowServiceImpl">
<ref bean="workflowServiceImpl"/>
</property>
</bean>
Giving “workflowServiceImpl†is an alfresco beanClass WorkflowWebService :
/** Alfresco JBPM Engine */
private WorkflowServiceImpl workflowServiceImpl = null;
public WorkflowWebService() { }
public void setWorkflowServiceImpl(WorkflowServiceImpl workflowServiceImpl) {
this.workflowServiceImpl = workflowServiceImpl;
System.out.println("WorkflowService : "+this.workflowServiceImpl);
}
public void getWorkflows() {
if (workflowServiceImpl == null) System.out.println("JBPM Engine null");
for (WorkflowDefinition def : workflowServiceImpl.getAllDefinitions()) {
System.out.println(def.getName()+" : "+def.getDescription());
}
}
In facts, it looks like the setter is never called, so the bean "workflowServiceImpl" is never initialized.Thanks for your reply.