[Building Sakai] Remove Axis Web services from Sakai

Chaitanya Cheekate chaitanya.cheekate at vidyayug.com
Thu Dec 18 22:19:37 PST 2014


Hello Steve,

I tried by changing url but it didn't work. Later I changed the web service
support class as you suggested initially with the help of Uday, it worked.
But I observed some issues w.r.t tool rendering. I summarized all my
observations below.

*1. URL Change:*

I am getting below exception If I deploy the portlet by changing only URL:
"org.apache.cxf.phase.PhaseInterceptorChain - Interceptor for {
http://webservices.sakaiproject.org/}SakaiLoginService has thrown
exception, unwinding now
org.apache.cxf.interceptor.Fault: Message part login was not recognized.
(Does it exist in service WSDL?)"

Please find the attached log file: sakai-connector-log.txt

*Changing invoke logic in** WebServiceSupport class:*

I changed the WebServiceSupport.java as per Uday suggestion so that portlet
is working fine.
Please find the attached patch(cxf-compatiblity.patch) and provide your
suggestions.

I tested this patch in *Liferay portal with Sakai trunk* version as I don't
have uPortal instance.
*Issues:*
I observed that Action buttons are not showing in the portlet.
*For ex: *
1. Add, Merge, Reorder, Options, Permissions buttons of Announcements tools
are not showing in the portlet.Please find the attached
screenshot(sakai-connector-announcements.png).2. Resources, dropbox, wiki
tools buttons are showing properly.

I am assuming that it's occurred due to iframe removal from sakai portal.

Thank you.



On Fri, Dec 19, 2014 at 1:23 AM, Steve Swinsburg <steve.swinsburg at gmail.com>
wrote:
>
> Hi,
>
>
> Sorry for the delay in replying. You can still do SOAP on CXF So it's
> likely just the URL that needs to change.
>
> cheers,
> Steve
>
> On Mon, Dec 15, 2014 at 4:34 PM, Ismail Naik <ismail.n at in.uaeexchange.com>
> wrote:
>>
>> Hi,
>>
>>
>>
>> Plz share the exception log,
>>
>>
>>
>> There will may reasons for this null pointer exception, make sure the
>> following points before running the client code:
>>
>>
>>
>> ·         Using cxf whether client code generator perfectly,
>>
>> ·         The steps/classes order  to invoke the web service i.e. the
>> client code. Is correct?
>>
>> ·         It seems the wsdl is deployed in local machine make user its
>> running and up, deployed without any exceptions.
>>
>> ·         Check the generated client code where actual request to
>> endpoint should be made.
>>
>>
>>
>> *Thanks & Regards*
>>
>> *Ismail N**.* - IT Department
>>
>> *X**m** Software Solutions Pvt Ltd* | SKCL | CENTRAL SQUARE- 1
>>
>> CIPET Road | Thiru-Vi-Ka  Industrial  Estate| Guindy | Chennai- 600032.
>>
>> TEL: 044-30464899 | FAX: 044-30464861|
>>
>> Ext:613
>>
>> ismail.n at in.uaeexchange.com
>>
>>
>>
>> *From:* sakai-dev-bounces at collab.sakaiproject.org [mailto:
>> sakai-dev-bounces at collab.sakaiproject.org] *On Behalf Of *Chaitanya
>> Cheekate
>> *Sent:* 12 December 2014 19:55
>> *To:* Steve Swinsburg
>> *Cc:* Sakai-Dev
>> *Subject:* Re: [Building Sakai] Remove Axis Web services from Sakai
>>
>>
>>
>> Hello Steve,
>>
>> I opened an issue in GitHub as well as I am trying to figure out how to
>> call cxf webservice (I'm new). So that I can implement in
>> sakai-connector-portlet.
>>
>> But I am getting null pointer exception as it's unable to create biding
>> object.
>>
>> Can you please verify the below code and provide your suggestions.
>>
>> *code:*
>>         URL wsdlURL = new URL("
>> http://127.0.0.1:7070/sakai-ws/soap/login?wsdl");
>>
>>         System.out.println(wsdlURL);
>>
>>         JaxWsDynamicClientFactory factory =
>> JaxWsDynamicClientFactory.newInstance();
>>         Client = factory.createClient(wsdlURL.toExternalForm(), new
>> QName("http://webservices.sakaiproject.org/",
>>                 "SakaiLoginService"));
>>         ClientImpl clientImpl = (ClientImpl) client;
>>         Endpoint endpoint = clientImpl.getEndpoint();
>>         List<ServiceInfo> serviceInfos =
>> endpoint.getService().getServiceInfos();
>>         ServiceInfo serviceInfo =serviceInfos.get(0);
>>         System.out.println("serviceInfo"+serviceInfo.getBindings());
>>
>>
>>         QName bindingName = new QName("
>> http://webservices.sakaiproject.org/",
>>                 "SakaiLoginService");
>>         BindingInfo binding = serviceInfo.getBinding(bindingName);
>>         //{
>>         QName opName = new QName("http://webservices.sakaiproject.org/",
>> "login");
>>         System.out.println("binding=============="+binding);
>>
>>         BindingOperationInfo boi = binding.getOperation(opName);
>>
>>
>>
>>
>>
>> On Wed, Nov 19, 2014 at 4:16 PM, Steve Swinsburg <
>> steve.swinsburg at gmail.com> wrote:
>>
>> Yes, the portlet will need an update. Could you do me a favour and raise
>> a github issue on the portlet? Even better would be to make the minor code
>> changes in the web service logic class for the new URL and send a pull
>> request :)
>>
>> cheers,
>> Steve
>>
>>
>>
>> On Tue, Nov 4, 2014 at 3:31 PM, Chaitanya Cheekate <
>> chaitanya.cheekate at vidyayug.com> wrote:
>>
>> I would like to know whether these changes will affect the sakai
>> connector portlet.
>>
>> Looks like sakai connector portlet completely written using Axis web
>> services.
>>
>>
>>
>> On Tue, Nov 4, 2014 at 2:43 AM, Alaa NIZAR <alaanizar at iihem.ac.ma> wrote:
>>
>> Great to hear that.
>>
>>
>>
>> So this is targeted to Sakai 11?
>>
>>
>>
>> Thank you for the clarification, by the way
>>
>>
>>
>>
>>
>> Sent from Samsung Mobile.
>>
>>
>>
>> -------- Original message --------
>>
>> From: Diego del Blanco Orobitg
>>
>> Date:03/11/2014 20:47 (GMT+00:00)
>>
>> To: Alaa NIZAR
>>
>> Cc: Miguel Carro Pellicer ,Neal Caidin ,Sakai-Dev
>>
>> Subject: Re: [Building Sakai] Remove Axis Web services from Sakai
>>
>>
>>
>> Meanwhile Miguel answers you in a more technical level...  don't worry
>> too much about the change, you will be able to continue using webservices
>> (with the same name and parameters) with perl-soap with very, very minor
>> changes needed in your part.   I can't say you won't need to touch
>> anything, but really almost anything. So, not a real problem!
>>
>>
>>
>> Diego
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> 2014-11-03 13:43 GMT-07:00 Alaa NIZAR <alaanizar at iihem.ac.ma>:
>>
>> Miguel,
>>
>>
>>
>> Can you please explain to me what's the difference between the two?
>>
>>
>>
>> It's the first time I heard about CXF.
>>
>>
>>
>> Thank you.
>>
>>
>>
>>
>>
>> Sent from Samsung Mobile.
>>
>>
>>
>> -------- Original message --------
>>
>> From: Miguel Carro Pellicer
>>
>> Date:03/11/2014 20:34 (GMT+00:00)
>>
>> To: Neal Caidin
>>
>> Cc: Sakai-Dev
>>
>> Subject: Re: [Building Sakai] Remove Axis Web services from Sakai
>>
>>
>>
>> +1! Convert AXIS services to CXF is really easy and gives many advantages.
>>
>>
>>
>> Miguel
>>
>> El lunes, 3 de noviembre de 2014, Neal Caidin <neal.caidin at apereo.org>
>> escribió:
>>
>> Hi all,
>>
>>
>>
>> Before I send out a formal proposal for this, I am hoping to get some
>> sakai-dev input.
>>
>>
>>
>> We are planning to remove Axis Web services [1]  from Sakai. The
>> preferred Web Services are CXF/REST [2] .
>>
>>
>>
>> What do you think?
>>
>>
>>
>>
>>
>> [1] Remove Axis - https://jira.sakaiproject.org/browse/SAK-28043
>>
>>
>>
>> [2] CXF - https://jira.sakaiproject.org/browse/SAK-25678
>>
>>
>>
>> Thanks!
>>
>> Neal Caidin
>>
>> Sakai Community Coordinator
>>
>>
>>
>>
>> --
>> This message has been scanned for viruses and
>> dangerous content by *MailScanner* <http://www.mailscanner.info/>, and
>> is
>> believed to be clean.
>> --
>> This message has been scanned for viruses and
>> dangerous content by *MailScanner* <http://www.mailscanner.info/>, and
>> is
>> believed to be clean.
>>
>>
>> _______________________________________________
>> sakai-dev mailing list
>> sakai-dev at collab.sakaiproject.org
>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>
>> TO UNSUBSCRIBE: send email to
>> sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
>> "unsubscribe"
>>
>>
>>
>>
>>
>> --
>>
>> *Diego del Blanco Orobitg*
>>
>> Spain & LATAM Regional Manager (*ANI Sakai <http://www.anisakai.es/>*)
>>
>> Apereo LATAM Representative (*Apereo Foundation <http://www.apereo.org/>*
>> )
>>
>>
>>
>> Ph: +1-480-521-8527
>>
>> Em: ddelblanco at anisakai.com
>>
>> Sk: ddelblanco.ani
>>
>>
>>
>>
>> --
>> This message has been scanned for viruses and
>> dangerous content by *MailScanner* <http://www.mailscanner.info/>, and
>> is
>> believed to be clean.
>> --
>> This message has been scanned for viruses and
>> dangerous content by *MailScanner* <http://www.mailscanner.info/>, and
>> is
>> believed to be clean.
>>
>>
>> _______________________________________________
>> sakai-dev mailing list
>> sakai-dev at collab.sakaiproject.org
>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>
>> TO UNSUBSCRIBE: send email to
>> sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
>> "unsubscribe"
>>
>>
>>
>>
>> --
>>
>> Thanks.
>>
>>
>> _______________________________________________
>> sakai-dev mailing list
>> sakai-dev at collab.sakaiproject.org
>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>
>> TO UNSUBSCRIBE: send email to
>> sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
>> "unsubscribe"
>>
>>
>>
>>
>>
>> --
>>
>> Thanks.
>>
>>  *Disclaimer*: This communication is intended solely for the use of the
>> individual or entity to whom it is addressed and others authorized to
>> receive it. It may contain confidential or legally privileged information.
>> If you are not the intended recipient, you are hereby notified that any
>> disclosure, copying, distribution, or action taken in reliance upon the
>> information is strictly prohibited and is unlawful. If you have received
>> this communication by error, please notify us immediately by responding to
>> this email before deleting it from your system. UAE Exchange cannot be held
>> responsible for the improper or incomplete transmission of information
>> contained in this communication, or for any delay in its receipt.
>> *Warning*: Internet communication cannot be guaranteed to be timely,
>> secure, error-free or virus-free. It is the responsibility of the recipient
>> to ensure that this email and its attachments, if any, are free from
>> viruses. UAE Exchange doesn't accept liability for any damage that may
>> result from viruses transmitted through this email.
>> Please be informed that as per UAE Exchange Information Security policy,
>> we will never request you to disclose your Account Number, Credit Card
>> Information, User ID, Personal Identification Number (PIN), Telephone
>> Identification Number (TIN), Password or any such information through
>> e-mails or phone.
>> Any e-mail or written communication received by you, which appears to
>> have been sent from UAE Exchange seeking your personal & confidential
>> information, should not be answered but advised to UAE Exchange at
>> info.sec at uaeexchange.com.
>> For further assistance email us at info.sec at uaeexchange.com.
>>
>

-- 
Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20141219/539180b3/attachment.html 
-------------- next part --------------
2014-12-19 11:26:20,415  INFO http-bio-7070-exec-5 org.sakaiproject.util.RemoteHostFilter - Access granted (.*): 127.0.0.1/127.0.0.1
2014-12-19 11:26:20,416  WARN http-bio-7070-exec-5 org.apache.cxf.phase.PhaseInterceptorChain - Interceptor for {http://webservices.sakaiproject.org/}SakaiLoginService has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Message part login was not recognized.  (Does it exist in service WSDL?)
	at org.apache.cxf.interceptor.BareInInterceptor.handleMessage(BareInInterceptor.java:133)
	at org.apache.cxf.binding.soap.interceptor.RPCInInterceptor.handleMessage(RPCInInterceptor.java:111)
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
	at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248)
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222)
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153)
	at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:167)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.sakaiproject.util.RemoteHostFilter.doFilter(RemoteHostFilter.java:188)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:457)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
2014-12-19 11:26:20,423  INFO http-bio-7070-exec-3 org.sakaiproject.util.RemoteHostFilter - Access granted (.*): 127.0.0.1/127.0.0.1
2014-12-19 11:26:20,424  WARN http-bio-7070-exec-3 org.apache.cxf.phase.PhaseInterceptorChain - Interceptor for {http://webservices.sakaiproject.org/}SakaiScriptService has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Message part getUserId was not recognized.  (Does it exist in service WSDL?)
	at org.apache.cxf.interceptor.BareInInterceptor.handleMessage(BareInInterceptor.java:133)
	at org.apache.cxf.binding.soap.interceptor.RPCInInterceptor.handleMessage(RPCInInterceptor.java:111)
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
	at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248)
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222)
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153)
	at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:167)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.sakaiproject.util.RemoteHostFilter.doFilter(RemoteHostFilter.java:188)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:457)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cxf-compatiblity.patch
Type: application/octet-stream
Size: 13549 bytes
Desc: not available
Url : http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20141219/539180b3/attachment.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sakai-connector-announcements.png
Type: image/png
Size: 12569 bytes
Desc: not available
Url : http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20141219/539180b3/attachment.png 


More information about the sakai-dev mailing list