just tried with web:list and http:list: the output seems fine but when i try to actually connect, I'm still experiencing Connection Refused.
http:list > ID │ Servlet │ Servlet-Name │ State │ Alias │ > Url > > ────┼───────────────────┼──────────────┼─────────────┼─────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── > 140 │ ResourceServlet │ default │ Deployed │ /hello-example/ │ > [/hello-example/] > 140 │ JspServletWrapper │ jsp │ Deployed │ │ > [/hello-example/*.jsp, /hello-example/*.jspx, /hello-example/*.jspf, > /hello-example/*.xsp, /hello-example/*.JSP, /hello-example/*.JSPX, > /hello-example/*.JSPF, /hello-example/*.XSP] > web:list > ID │ State │ Web-State │ Level │ Web-ContextPath │ Name > ────┼─────────────┼─────────────┼───────┼─────────────────┼──────────────── > 140 │ Active │ Deployed │ 81 │ /hello-example │ task-ui (0.0.1) I followed the example shown in https://github.com/apache/karaf/blob/master/itests/test/src/test/java/org/apache/karaf/itests/WebTest.java: to test, you call the command "feature:install war" and "web:install" directly with executeCommand. Then I realized that the port open was not 8181 (as I was lead to believe from the WAR Deployer manual) but 9080 (Set from KarafTestSupport HTTP_PORT!). By using this.getHttpPort() method I was able to make it work! Some code: this.installAndAssertFeature("war"); stdout = this.executeCommand("web:install mvn:com.fibonacci.microsi/task-ui/0.0.1/jar hello-example"); System.out.println(stdout); stdout = this.executeCommand("web:list", 5000L, false); System.out.println(stdout); this.installAndAssertFeature("war"); this.assertBundleInstalled("task-ui"); URL url = new URL("http://localhost:" + this.getHttpPort() + "/hello-example"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.setRequestMethod("GET"); StringBuilder buffer = new StringBuilder(); try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { String line = null; while ((line = reader.readLine()) != null) { buffer.append(line).append("\n"); } } System.out.println(buffer.toString()); Thanks for pointing to the right direction! Il giorno sab 16 nov 2019 alle ore 11:08 <j...@nanthrax.net> ha scritto: > Hi > > In the test, you can check with web:list and http:list if the status is > deployed (and not deploying). > Maybe you test the connection before the endpoint is actually started. > You can see how we do it in the karaf examples itests. > > Regards > JB > > Le 16 nov. 2019 11:01, Massimo Bono <massimobo...@gmail.com> a écrit : > > Hi, > > I've generated a wab file containing a simple "hello world" index.html. > Inside this wab there is the standard manifest with the WebContext-Path > manifest entry. > > When I manually start a karaf container, everything goes smoothly: I > install the war feature (by using "feature:install war") and then I can > successfully view the Webapp on a browser (http:/ > 127.0.0.1:8181/hello-example). > > However, things go south when I try to test automatically the webapp. > I've created a simple test (by extension KaratTestSupport) where I > install the "war" feature using KarafDistributionOption.features and then > start the webapp bundle (via CoreOptions.mavenBundle()). I'm using > httpcomponents.httpclient > (with a OSGi compliant manifest header) to request the HTTP GET > connection; however, albeit http:list show the endpoint, I always obtain > a "ConnectionRefused" (in the browser I cannot see anything as well). > > Surely I'm doing something wrong. Is this the correct way to test a webapp? > > Thanks for any kind reply! > > -- > *Ing. Massimo Bono* > > > -- *Ing. Massimo Bono*