Many times it is difficult to find which table or tables some information is saved.
It involves searching documentation, debugging and looking at code.
This sql query is useful in this (at present the query is for postgres database)
SELECT ('select ' || column_name || ' from ' || table_name || ' where '|| column_name || ' like ''%?%''; ')
FROM information_schema.columns c
WHERE c.table_name in (
FROM information_schema.tables where table_schema = 'public'
) and c.data_type='text'
This post of mine explains a simple solution DATABASE Blog
This is useful for developers who are new to jive and want to learn how the data gets stored and to debug in better informed way.
The jive 5 has many imporvements in terms of webservices. There are primarily REST and SOAP based services and some places both*.
Most of the existing webservices wount work directly on new version due to changes like form based RESTFul services.
Meaning that the webservices will need to be called by submiting a form to a URL with inputs passed as form input elements.
Underlying jive webservices is apache cxf framework. This is plugged in using spring component.
Follownig configurations are needed to create a webservice in this approach
jaxrs element with id, address and implementing bean reference. This entry along with bean and annotations on bean interface is used to declare a web-service.
<jaxrs:server id="custom-service-name" address="custom-servie-address">
<ref bean="custom-service-manager-bean" />
Bean interface has annotations @GET/@POST/@DELETE and @Path element which has location of the individual method. @PathParam is used to extract elements from path to method parameters. @FormParam can be used to extract data from post.
Differenct between @GET and @Get
Both are used for RESTFul services but @Get from codehus is used when we use both SOAP and REST over same service implementing class.
When to use REST and when to use SOAP
SOAP is a approach of integrating large applicaitons where interface complexity is high. For Jive REST services are sufficient to expose it's functionality in simple and efficient way.
But there are some drawbacks that i fealt (There may be workarounds to these limitations and it will be great if you can provide your valuable comments)
1. The RESTFul services dont have WSDL files - So in case one know the service address it is hard to find list of available methods, the interface for calling them etc...
2. There is less control while calling webservices while using JSON approach of data transfer. In case we use XML approach, where is the definition of the XML elements?
So in case we would like to modify the payload of xml/json message on the fly it will be difficult since the definition is not well defined like that in SOAP (SOAP WSDL has Schema element)
SOAP should be used when there is a need to consume services from complex applications. The use of SOAP should be minimum since it involves lot of parsing and preprocessing, on the other hand it also has good integration with SOA architecture and easy to integrate with complex systems.
Jive is set of latest technologies bought together and applied to emerging domain of social software.
Here are few technical details about how jive 5 actually works and what technologies are inside
Spring: Spring framework is the mother board for jive and it connects all the components together without having them depending on each other.
It contains various components like Core, AOP, JDBC etc which are very easy to use and light weight.
Struts: This is web/view layer of Jive which includes MVC design pattern and has SOY/Freemarker based views. This is one of the most popular MVC framework and is easy to use well documented framework. It also provides lots of build in features like action support classes, UI components, Tokenizer, Validation and flow control.
Sitemesh: This component decorates the UI with header footer and common elements.
Apache CXF: This is used for exposing functionality as webservices. Jive 5 uses JAXRS based RESTFul webservices.
How jive starts up
Jive as any other web applicaton has web.xml descriptor which controls its lifecycle.
Web.xml -> DelegateFilterProxy (many pre and post processing elements)
-> JiveApplicationContextLoaderListener (Bootstraps Spring along with ContextConfigLocation element
-> JiveContextLoader (loads all the spring configuration files)
-> spring-setupWebContext (loads all the struts MVC) -> strutsFilter
Along with this Jive has customized Freemarker manager which sets global static properties to be available across the views.