jsp jsf jetty eclipse-rcp embedded-jetty

jsp - Eclipse RCP plugin+embedded Jetty+JSF



eclipse-rcp embedded-jetty (2)

Hice un plugin RCP con Jetty integrado de la siguiente manera:

1) En plugin.xml -> Dependencias, he agregado lo siguiente:

org.eclipse.equinox.http.jetty org.eclipse.equinox.http.registry org.mortbay.jetty.server javax.servlet

2) En plugin.xml -> Extensions, he agregado un punto de extensión Servlet ( org.eclipse.equinox.http.registry.servlet )

class: TemperatureServlet alias:/temperature

El TemperatureServlet se ve así:

import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TemperatureServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doGet Called"); resp.sendRedirect("Convertor.jsp"); } }

El archivo Convertor.jsp se ve así:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <f:view> <h:form> <h:panelGrid columns="2"> <h:outputLabel value="Celsius"></h:outputLabel> <h:inputText value="#{temperatureConvertor.celsius}"></h:inputText> </h:panelGrid> <h:commandButton action="#{temperatureConvertor.celsiusToFahrenheit}" value="Calculate"></h:commandButton> <h:commandButton action="#{temperatureConvertor.reset}" value="Reset"></h:commandButton> <h:messages layout="table"></h:messages> </h:form> <h:panelGroup rendered="#{temperatureConvertor.initial!=true}"> <h3> Result </h3> <h:outputLabel value="Fahrenheit "></h:outputLabel> <h:outputLabel value="#{temperatureConvertor.fahrenheit}"></h:outputLabel> </h:panelGroup> </f:view> </body> </html>

El archivo faces-config.xml contiene:

<?xml version="1.0" encoding="UTF-8"?> <faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" version="2.0"> <managed-bean> <managed-bean-name>temperatureConvertor</managed-bean-name> <managed-bean-class>hellojsf.TemperatureConvertor</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> </faces-config>

Mi complemento tiene la siguiente jerarquía:

plugin-name ---src ------class package ---------Activator.java ---------Application.java ---------ApplicationActionBarAdvisor.java ---------ApplicationWorkbenchWindowAdvisor.java ---------Perspective.java ---------TemperatureConvertor.java ---------TemperatureServlet.java ---META-INF ------MANIFEST.MF ---resources -------WebContent ----------WEB-INF -------------faces-config.xml -------------web.xml ----------Convertor.jsp ---plugin.xml

En la clase Activator , método start (), he comenzado el servidor web así:

public void start(BundleContext context) throws Exception { super.start(context); plugin = this; Bundle bundle = Platform.getBundle("org.eclipse.equinox.http.registry"); if (bundle.getState() == Bundle.RESOLVED) { bundle.start(Bundle.START_TRANSIENT); } Dictionary settings = new Hashtable(); settings.put("http.enabled", Boolean.TRUE); settings.put("http.port", 8080); settings.put("http.host", "0.0.0.0"); settings.put("https.enabled", Boolean.FALSE); settings.put("context.path", "/"); settings.put("context.sessioninactiveinterval", 1800); try { JettyConfigurator.startServer(PLUGIN_ID + ".jetty", settings); } catch (Exception e) { e.printStackTrace(); } }

A este complemento también he agregado las siguientes bibliotecas:

  • JSTL: javax.servlet.jsp.jstl-1.2.1-javadoc.jar; javax.servlet.jsp.jstl-api-1.2.1-javadoc.jar
  • JSF 2.0 (Apache MyFaces JSF Core-2.0 API 2.0.2)

Después de iniciar la aplicación, si escribo en mi navegador localhost: 8080 / temperature

No sabe dónde encontrar Convertor.jsp. Mi pregunta es: ¿cómo puedo configurar este complemento para conocer la ubicación del recurso WebContent y lo más importante, cómo puedo configurar el complemento para saber cómo procesar JSF y saber sobre faces-config.xml y web.xml.

¿Puedo, por ejemplo, cuando defino la extensión org.eclipse.equinox.http.registry.servlets, hacer algo como esto? clase: javax.faces.webapp.FacesServlet alis: /*.jsp

(¿Todos los archivos * .jsp serán procesados ​​por FacesServlet)?

Muchas gracias y lo siento si las preguntas son tontas, pero soy nuevo en esta área de complementos de RCP, Jetty y JSF.


Eche un vistazo a la configuración de un contexto en embarcadero . Puede definirlo antes de iniciar su servidor.

public class OneWebApp { public static void main(String[] args) throws Exception { String jetty_home = System.getProperty("jetty.home",".."); Server server = new Server(8080); WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/"); webapp.setWar(jetty_home+"/webapps/test.war"); server.setHandler(webapp); server.start(); server.join(); } }


Una clase JSP Extension Factory en org.eclipse.equinox.jsp.jasper.registry proporciona compatibilidad con JSP para su uso junto con el punto de extensión de los servlets.

JSPFactory se puede utilizar junto con org.eclipse.equinox.http.registry y el punto de extensión Servlets para permitir el uso declarativo de JSP con el registro de extensión.

JSPFactory aceptará un parámetro de "ruta" correspondiente a la ruta base en el paquete para buscar recursos JSP. Este parámetro se puede configurar utilizando el enfoque de separador ":" o mediante el parámetro xml.

por ejemplo, class = "org.eclipse.equinox.jsp.jasper.registry.JSPFactory: / A / PATH" o