OK, je suis complètement bloqué. Je veux lancer Tomcat en mode embarqué pour pouvoir tester une application sans exécuter le serveur dans un processus séparé. Il me manque quelque chose de simple, de stupide et d'important, et j'ai besoin de votre aide pour le voir.Incorporation de Tomcat et émission de demandes à l'application déployée
Ce test échoue avec une erreur HTTP 400, demande incorrecte. J'ai essayé MemoryProtocolHandler, context.invoke(), ... je ne sais pas quoi faire. Peut-être que vous voyez quelque chose de simple.
package ca.jbrains.jsfunit.learning.test; import org.apache.catalina.Container; import org.apache.catalina.Context; import org.apache.catalina.Engine; import org.apache.catalina.connector.Connector; import org.apache.catalina.connector.Request; import org.apache.catalina.realm.MemoryRealm; import org.apache.catalina.startup.Embedded; import org.junit.After; import org.junit.Test; import com.gargoylesoftware.htmlunit.WebClient; public class LearnEmbeddedTomcatTest { private Embedded embedded; private Container host; private Engine engine; @Test public void deploySampleApplicationFromFileSystem() throws Exception { String tomcatPath = "/Users/jbrains/ThirdParty/apache-tomcat-5.5.28-embed"; // Create an embedded server embedded = new Embedded(); embedded.setCatalinaHome(tomcatPath); embedded.setRealm(new MemoryRealm()); // Create an engine engine = embedded.createEngine(); engine.setDefaultHost("localhost"); // Create a default virtual host host = embedded.createHost("localhost", tomcatPath + "/webapps"); engine.addChild(host); // Create an application context Context context = embedded.createContext("TddJsfWeb", tomcatPath + "/webapps/TddJsfWeb"); host.addChild(context); // Install the assembled container hierarchy embedded.addEngine(engine); // Assemble and install a default HTTP connector Connector connector = embedded.createConnector("localhost", 8080, "http"); embedded.addConnector(connector); // Start the embedded server embedded.setAwait(true); embedded.start(); WebClient webClient = new WebClient(); webClient.getPage("http://localhost:8080/TddJsfWeb/static.xhtml"); } }
Le .war décompressé est sans aucun doute à /Users/jbrains/ThirdParty/apache-tomcat-5.5.28-embed/webapps/TddJsfWeb/...
et static.xhtml
est à la racine du dossier .war décompressé.
S'il vous plaît, s'il vous plaît, montrez-moi à quel point je suis stupide. Merci.
@Tim: Merci pour l'échantillon de code - Je n'en ai pas eu un en main – gpampara
Je suis allé sur cette route et suis allé beaucoup plus loin. Maintenant, j'essaie d'utiliser JSFUnit avec Jetty et ça ne fonctionne pas exactement comme prévu. Je vais devoir comprendre plus. –
Utilisez-vous Jasper? (Ma connaissance de JSF s'arrête là ..;)) – Tim