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.