You have your Solr server set-up, now what? You want people to be able to perform queries and have some control over what can be input, well you need a Java Web Service! This is a short guide on how to create your Java Web Service which may not be tailored to your particular needs but you can tweak it as you please.
Set-Up
To set up the Java Web Service you will need:
- Netbeans 7 with GlassFish
- Solr Set-up and Running
Steps Involved
Project Set-Up
- Start Netbeans and Go to
File→New Project→Java Web→Web Applications
and then hitNext
. - Give your project a name and then hit
Next
- Ensure that Glassfish is the selected server and hit
Finish
HelloResource.java
- Right click the Default Package and create a new
Java Class
and call itHelloResource.java
- Enter the following code:
import java.net.URL; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URLConnection; /** * * @author alamil */ //Looks for hello in the pathname @Path("hello") public class HelloResource { /** * * @param arg * @param rows * @return */ @GET @Path("/query") //Looks for /query in the pathname @Produces("text/xml") //Returns xml public String hello(@QueryParam("q") String arg, @QueryParam("rows") String rows, @QueryParam("filter") String filter){ //Variables String xmldoc = ""; String inputLine; //If the user has not selected a number of rows to display then 50 is set to defualt if (rows == null) rows = "50"; //If the user has not selected fields to filter on then it uses the default if (filter == null) filter = "id,title"; try{ //Trys to connect to the Solr Server with the query URL solr = new URL("http://localhost:8080/solr/select?q=url:(" + arg.replaceAll(" ","%20") + ")^25%20text:(" + arg.replaceAll(" ","%20") + ")&fl=" + filter + "&rows=" + rows); URLConnection yc = solr.openConnection(); //Reads the returned xml file from the server BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); while ((inputLine = in.readLine()) != null){ xmldoc = xmldoc + inputLine; } //Close the file in.close(); //Return the xml document (Replacing the %20's with spaces) return xmldoc.replaceAll("%20", " "); }catch (Exception e){ return "Exception"; } } }
RESTConfig.java
- Right click the Default Package and create a new
Java Class
and call itRESTConfig.java
- Enter the following code:
import javax.ws.rs.core.Application; import javax.ws.rs.ApplicationPath; /** * * @author alamil */ @ApplicationPath("SearchInt") public class RESTConfig extends Application { }
Testing
- Go to
Run
→Run Project
and your server should start - A browser window will open to the
index.html
page that is there which you can tweak and edit to your own liking - Start your solr server
- In your browser, Navigate to:
localhost:8080/HelloRest/SearchInt/hello/query?q=[query term]&filter=[filter term]&rows=[rows]
- The input parameters set up are:
- q=… : representing the keywords in the query
- rows=… : representing the number of rows you wish to have returned
- filter=… :representing which fields are displayed to the user
Your server and Solr server may be running from the same port which can cause problems
Java Web Services Online Training
ReplyDeleteWeb Services Course
Web Services Training Courses
Java Web Services Training in Chennai
Java Web Services Training in Chennai Java Web Services Training in Chennai Java Web Services Online Training Java Web Services Training in Chennai
DeleteIs this code still working? pls reply asap
ReplyDeleteThe when I read a blog, Hopefully which it doesnt disappoint me approximately that one. What i’m saying is, It was my choice to read, but I just thought youd have something intriguing to convey. All I hear is actually a few whining about something that you could fix should you werent too busy looking for attention. best of the web directory
ReplyDelete