45 votes

Eclipse RCP plugin + Jetty intégrée + JSF

J'ai fait une RCP plugin avec Jetty embarqué comme suit:

1) Dans plugin.xml -> les Dépendances, j'ai ajouté ce qui suit:

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

2) Dans plugin.xml -> Extensions, j'ai ajouté une Servlet point d'extension (org.eclipse.équinoxe.http.de registre.servlet)

class: TemperatureServlet
alias:/temperature

Le TemperatureServlet ressemble à ceci:

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");
    }
}

Le fichier Convertisseur.jsp ressemble à ceci:

<%@ 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>

Le fichier faces-config.xml contient:

<?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>

Mon plugin a la hiérarchie suivante:

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

Dans Activateur de la classe, la méthode start(), j'ai commencé le serveur web comme ceci:

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();
        }
    }

À ce plugin, j'ai aussi ajouté les bibliothèques suivantes:

  • 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 de l'API 2.0.2)

Après je lance l'application, si je tape dans mon navigateur localhost:8080/température

Il ne sait pas où trouver un Convertisseur.jsp. Ma question est: comment puis-je configurer ce plugin pour connaître l'emplacement des ressources WebContent et le plus important, comment puis-je configurer le plugin pour savoir comment le processus de JSFs et connaître les faces-config.xml et web.xml.

Puis-je, par exemple, quand j'définir l'extension org.eclipse.équinoxe.http.de registre.les servlets, faire quelque chose de ce genre? catégorie: javax.des visages.webapp.FacesServlet alis: /*.jsp

(tous les fichiers *.jsp pour être traitées par la FacesServlet)?

Merci beaucoup et désolé si les questions sont idiotes, mais je suis nouveau dans ce domaine de la RCP plugins, de la Jetée et de la JSF.

1voto

heat Points 359

Jetez un coup d'œil à la définition d'un contexte dans la jetée . Vous pouvez le définir avant de démarrer votre serveur.

 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();
    }
}
 

1voto

Ashish Points 2798

Un JSP Extension de l'Usine de classe org.eclipse.équinoxe.jsp.jasper.registre fournit la prise en charge de JSP pour une utilisation en conjonction avec les servlets point d'extension.

Le JSPFactory peut être utilisé en conjonction avec org.eclipse.équinoxe.http.de registre et les Servlets point d'extension pour permettre l'utilisation de Jsp de manière déclarative avec l'extension de registre.

JSPFactory d'accepter un "chemin" paramètre correspondant au chemin d'accès de base dans le bundle pour chercher des JSP de ressources. Ce paramètre peut être réglé à l'aide de l' ":" séparateur d'approche ou par paramètre xml.

par exemple class="org.eclipse.équinoxe.jsp.jasper.de registre.JSPFactory:/UN/CHEMIN" ou

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X