(Jump to other KnowledgeBases)
DSpace Resources
DSpace Website
DSpace Documentation
DSpace Wiki
DSpace Demo Site
Contribute to KnowledgBase
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
package org.dspace.app.webui.servlet; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.transform.stream.StreamResult; import org.apache.log4j.Logger; import org.dspace.authorize.AuthorizeException; import org.dspace.core.Context; public class SearchJSONServlet extends DSpaceServlet { private static final long serialVersionUID = 1L; /** log4j category */ private static Logger log = Logger.getLogger(SearchJSONServlet.class); /** * Create an DSpaceServlet Servlet */ public SearchJSONServlet() { super(); } protected void doDSPost(Context context, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException, AuthorizeException { doDSGet(context, request, response); } protected void doDSGet(Context context, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException, AuthorizeException { String pathString = request.getPathInfo(); String queryString = request.getQueryString(); //Build localhost solr query path String scheme = request.getScheme(); // http String serverName = "127.0.0.1"; // Solr can only be accessed from localhost int serverPort = request.getServerPort(); // 80 String contextPath = "/solr"; String servletPath = "/searchJSPUI"; String parentContextPath = ""; StringBuffer url = new StringBuffer(); url.append(scheme).append("://").append(serverName); if (serverPort != 80) url.append(":").append(serverPort); url.append(parentContextPath).append(contextPath).append(servletPath); url.append(pathString + "?"); url.append(queryString); String solrPath = url.toString(); //Get response from solr server and send it as servlet reponse StringBuilder jsonResponse = new StringBuilder(); URL sorlURL = new URL(solrPath); URLConnection solrConnection = sorlURL.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(solrConnection.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) jsonResponse.append(inputLine + "\n"); in.close(); StreamResult result = new StreamResult(response.getOutputStream()); response.setHeader("Content-Length", String.valueOf(jsonResponse.length())); response.getOutputStream().flush(); byte[] buf = jsonResponse.toString().getBytes(); response.setContentLength(buf.length); ServletOutputStream servletOut = response.getOutputStream(); servletOut.write(buf); } } |
...