How to Use SOAP with osworkflow---client test

View: New views
2 Messages — Rating Filter:   Alert me  

How to Use SOAP with osworkflow---client test

by Shantanu Puranik :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dear all:

I deployed osworkflow-2.8.0-example.war and want to use soap xfire but failed,
Idon't know what's wrong...
here is my configeration

=================================================
##osworkflow/WEB-INF/web.xml---nothing change

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <display-name>OSWorkflow Example App</display-name>
  <servlet>
    <servlet-name>SOAPWorkflow</servlet-name>
    <servlet-class>com.opensymphony.workflow.soap.SOAPWorkflowServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>SOAPWorkflow</servlet-name>
    <url-pattern>/soap/*</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>
=================================================
##osworkflow/META-INF/xfire/service.xml----i add

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
 <service>
  <name>Workflow</name>
  <namespace>http://workflow.opensymphony.com</namespace>
  <serviceClass>com.opensymphony.workflow.Workflow</serviceClass>
<implementationClass>com.opensymphony.workflow.basic.BasicWorkflow</implementationClass>
 </service>
</beans>
======================================================
## osworkflow/soap_client.jsp ---test client
<%@ page import="com.opensymphony.workflow.Workflow"%>
<%@ page import="org.codehaus.xfire.XFireFactory"%>
<%@ page import="org.codehaus.xfire.client.XFireProxyFactory"%>
<%@ page import="org.codehaus.xfire.service.Service"%>
<%@ page import="org.codehaus.xfire.service.binding.ObjectServiceFactory"%>

<%
String serviceUrl = "http://localhost:8080/osworkflow/soap/Workflow?wsdl";
long id = 0;
Service serviceModel = new ObjectServiceFactory().create(Workflow.class,
            "Workflow", "http://workflow.opensymphony.com", null);

Workflow wf = (Workflow) new XFireProxyFactory().create(serviceModel, serviceUrl);
try {
        id = wf.initialize("example", 100, null);        
        out.println("New workflow entry "+id+" created and initialized!");
} catch (Exception ex) {
         ex.printStackTrace();
}
%>

test http://localhost:8080/osworkflow/soap_client.jsp but I got error message:

org.apache.jasper.JasperException: Exception in JSP: /soap_client.jsp:9

6: <%
7: String serviceUrl = "http://localhost:8080/osworkflow/soap/Workflow?wsdl";
8: long id = 0;
9: Service serviceModel = new ObjectServiceFactory().create(Workflow.class, "Workflow", "http://workflow.opensymphony.com", null);
10: Workflow wf = (Workflow) new XFireProxyFactory().create(serviceModel, serviceUrl);
11:
12: try {


Stacktrace:
        org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

java.lang.NullPointerException
        org.codehaus.xfire.service.binding.ObjectServiceFactory.createBindings(ObjectServiceFactory.java:250)
        org.codehaus.xfire.service.binding.ObjectServiceFactory.create(ObjectServiceFactory.java:229)
        org.apache.jsp.soap_005fclient_jsp._jspService(soap_005fclient_jsp.java:55)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

 
i already see  
http://xfire.codehaus.org/Client+API
http://wiki.opensymphony.com/display/WF/3.8+SOAP+Support
but still don't know how to new a workflow using soap

please kindly help me, thank you
---------------------------------------------------------------------
Posted via Jive Forums
http://forums.opensymphony.com/thread.jspa?threadID=369652&messageID=455970#455970


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...


Re: How to Use SOAP with osworkflow---client test

by Shantanu Puranik :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I find 2 solutions
*************************************************************************************
<1> just download xfire-aegis-1.0.jar,xfire-core-1.0.jar replace the old xfire jar file, and download commons-codec-1.3.jar,commons-httpclient-3.1.jar alse needed.
<2>if you want to use xfire version 1.2.6...
1.you should alse put these in your classes/lib...
    axis-wsdl4j-1.5.1.jar (replace wsdl4j-1.4.jar)
    jaxme-api-0.3.1.jar
    spring-beans-1.2.6.jar
    spring-context-1.2.6.jar
    spring-core-1.2.6.jar
    spring-web-1.2.6.jar
    xbean-spring-2.4.jar
    xbean-spring-common-2.4.jar
    xfire-all-1.2.6
2.your services.xml should located at classes\META-INF\xfire
====================================
services.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
 <service>
  <name>Workflow</name>
  <namespace>http://workflow.opensymphony.com/Workflow</namespace>
  <serviceClass>com.opensymphony.workflow.Workflow</serviceClass>
  <implementationClass>com.opensymphony.workflow.soap.XFireSOAPWorkflow</implementationClass>
 </service>
</beans>
===============================================
3.update web.xml SOAPWorkflow severlet like this...
   <servlet>
    <servlet-name>SOAPWorkflow</servlet-name>
    <servlet-class>
      org.codehaus.xfire.transport.http.XFireConfigurableServlet
   </servlet-class>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>SOAPWorkflow</servlet-name>
    <url-pattern>/soap/*</url-pattern>
  </servlet-mapping>
*************************************************************************************
then you can use soap...
ex: newworkflow.jsp
<%@ page import="com.opensymphony.workflow.Workflow,com.opensymphony.workflow.basic.BasicWorkflow"%>
<%@ page import="org.codehaus.xfire.client.XFireProxyFactory"%>
<%@ page import="org.codehaus.xfire.service.Service"%>
<%@ page import="org.codehaus.xfire.service.binding.ObjectServiceFactory"%>
<%
        String serviceURL = "http://localhost:8080/osworkflow/soap/Workflow";
        Service serviceModel = new ObjectServiceFactory().create(Workflow.class);
        XFireProxyFactory serviceFactory = new XFireProxyFactory();
       
        Workflow wf = (Workflow) serviceFactory.create(serviceModel, serviceURL);
    //Workflow wf = new BasicWorkflow((String) session.getAttribute("username"));
        long id = wf.initialize("example", 100, null);
%>

New workflow entry <a href="test.jsp?id=<%=id%>">#<%=id%></a> created and initialized!

<%@ include file="nav.jsp" %>
---------------------------------------------------------------------
Posted via Jive Forums
http://forums.opensymphony.com/thread.jspa?threadID=369652&messageID=463855#463855


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...

LightInTheBox - Buy quality products at wholesale price