6 Replies Latest reply on Jan 3, 2013 1:49 PM by mark.weitzel

    Jive5  SOAP Webservice plugin development.

    sunilkcs

      Hi Todd

                 I developed a plugin which is supposed to expose SOAP web services to clients (My client mandate he needs SOAP services. SOAP is deprecated in my Jive 5 setup) and consumes existing Rest Services.  plugin.xml and spring.xml files are updated accordingly. I can see the WSDL file in this link  "http://myjivehost:8080/rpc/rest/demoService?wsdl".  I have two services functions defined in my service class. Here is my requirements

       

      1. How my client can authenticate to use my soap services. (The client will use valid existing jive credential only)

      2. Once he authenticated , he will call getmyprofiledetails()  service function to retrieve his profile details.

       

      Here is my service class code snippet. I am struggling what code snippet to add to this to achieve my objectives.

       

      @WebService(portName="DemoService", serviceName = "DemoService", targetNamespace = "http://jivesoftware.com/clearspace/webservices")

      @SOAPBinding(style = SOAPBinding.Style.RPC, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)

      public class DemoServiceImpl implements DemoService {

       

          private static final Logger log = LogManager.getLogger(DemoServiceImpl.class);

          private CommunityManager communityManager;

          private DocumentManager documentManager;

          private WSUtil wsUtil;

        

          @WebMethod

          public String getMyReply() {

           return "My answers are limited, you must ask the right question.";

          }

        

          @WebMethod

           //operation to get the profile details.

          public <what to return ?>  getmyprofiledetails( <do i need to pass any parameter ?>)

           {

           }

      }

       

      I know how the Rest API's and how can it be used. This is the one being used for getting profile details

      "GET http://domain:port/application_context/api/core/v2/my" with basic jive authentication credentials. But in this context I am trying develop my own soap web services. Please tell me how can i get the authenticated user details in my javacode and retrive his profile info and return it.  Thank You.

        • Re: Jive5  SOAP Webservice plugin development.
          sunilkcs

          Please suggest if my approach is wrong. Final objective is only SOAP services must be there for my client with custom functionality. Basically i want to pull profile information and blogs, blog posts from jive and provide it as soap services.

            • Re: Jive5  SOAP Webservice plugin development.

              It is hard to validate an approach without knowing the use case. So, what are you trying to do? For example, in 5.0 we introduced the apps framework and REST API as a way to avoid building plugins. While there are some limitations, depending on the use case, these could be a better alternative.

                • Re: Jive5  SOAP Webservice plugin development.
                  sunilkcs

                  Hi Mark

                         Thank You for the response. Let me explain. We have a CRM application. This application want to pull some information (profile details, blogs etc) from Jive. CRM expects a SOAP based service from Jive (I dont know why...because i am not an expert on CRM side. But this CRM team asked me to provide a WSDL service!  ). My work is finished if i can provide a WSDL service with very minimal set of functonalities like getting userinfo, getting blogs, getting blogposts etc.  Forget about single signon and all those stuffs for now. I just want a SOAP service from Jive. I am trying to get it through my custom plugin.  Kindly let me know any more info/clarification required..

              • Re: Jive5  SOAP Webservice plugin development.

                Maybe we could break the problem down into two parts. First, you need to provide a WSDL document to the CRM team that describes the endpoint that you will use to pull information from Jive. Since Web Services was deprecated in 5.0, you could craft one of these by hand based upon what's available in the REST API (OpenClient REST API). Next, when that endpoint is hit, you need to pull the information from Jive.

                 

                Rather than writing a plugin, would it be possible to simply stand up your own "proxy service"? It seems like a pretty straight forward thing to do and could potentially simplify the task at hand.

                 

                p.s. I'd ask what they are going to do with the WSDL. If they are simply going to use this in a browser, then it's probably just as easy to let them use the REST API and JSON.