Servlet registrata ma non raggiungibile

Salve,
sto provando a registrare una servlet personalizzata nel core del mio progetto di test (il semplice progetto del quickstart) seguendo il manuale dello sviluppatore https://doc.cuba-platform.com/manual-7.2/servlet_registration.html.
Grazie a dei printout posso vedere che la servlet viene correttamente inizializzata, ma non riesco a raggiungere l’indirizzo mappato perchè viene “consumato” (penso dalla servlet di vaadin) riportandomi istantaneamente alla pagina dove mi trovavo prima.
come posso fare per evitarlo?

grazie

Ciao e benvenuto nel forum!

Potresti condividere il codice che hai usato per la registrazione della servlet?
Stai provando a creare un app component e usarlo poi in un’app contenitore, o stai provando direttamente nell’app di test?

Paolo

Ciao di nuovo, intanto ho fatto una prova al volo, e mi risulta funzioni tutto correttamente (sto usando CUBA 7.2.4).

Questa la struttura del progetto core:
Screenshot 2020-06-02 at 15.46.44

Questo è CoreInitializer.java:

package com.company.servlettest.core;

import com.haulmont.cuba.core.sys.servlet.ServletRegistrationManager;
import com.haulmont.cuba.core.sys.servlet.events.ServletContextInitializedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

import javax.inject.Inject;
import javax.servlet.Servlet;

@Component
public class CoreInitializer {
    @Inject
    private ServletRegistrationManager servletRegistrationManager;

    @EventListener
    public void initializeHttpServlet(ServletContextInitializedEvent e) {
        Servlet myServlet = servletRegistrationManager.createServlet(
                e.getApplicationContext(), "com.company.servlettest.myservlet.MyServlet");

        e.getSource().addServlet("myservlet", myServlet)
                .addMapping("/my/");
    }
}

Questo MyServlet.java:

package com.company.servlettest.myservlet;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class MyServlet extends HttpServlet {

    private static final long serialVersionUID = -2660067139118131179L;

    private static final Logger log = LoggerFactory.getLogger(MyServlet.class);

    @Override
    protected void doGet (HttpServletRequest req, HttpServletResponse resp) throws IOException {
        log.debug("Entering MyServlet.doGet()");
        PrintWriter writer = resp.getWriter();
        writer.println("Ciao Mondo!");
    }
}

E se vado all’indirizzo //localhost:8080/app-core/my/:
Screenshot 2020-06-02 at 15.49.42

PS: avendo registrato la Servlet nel core ricorda che è raggiungibile con l’URL del core cioè app-core… se vedi che risponde Vaadin allora stai usando l’URL del blocco web, che è app (o qualunque nome tu abbia dato all’app).

Paolo

2 Mi Piace

Ciao Paolo,
ci eravamo recentemente conosciuti in una conference call. Grazie mille delle risposte, effettivamente stavo chiamando app e non app-core: adesso ho provato e adesso funziona benissimo anche a me.

grazie ancora.