Hello folks,
this is my first post here, so my apologies if this is not the right place to put this question, or if the technical terms are not the most accurate.
I need to create a servlet that should be used within a vaadin 8 + spring-boot application. I have already found out how to create a custom servlet to replace the vaadin one, but what a really need is to develop another servlet that will send a response to the requester in a very specific way. Bellow you can find the code of the test servlet i’ve created. Please bear in mind that this is a test Servlet, so the code is a little bit ugly. As soon as I get it to work (i.e. get registered and available), it will properly rewritten.
package cl.vmetrix.vcube.viewlayer.app.cfg;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.Session;
import org.hibernate.jdbc.Work;
import org.springframework.stereotype.Component;
import com.flexmonster.compressor.Compressor;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.server.VaadinServlet;
import com.vaadin.spring.server.SpringVaadinServlet;
import cl.vmetrix.persistencelayer.database.DatabaseBO;
import cl.vmetrix.vcube.viewlayer.flexmonster.FlexmonsterUI;
import cl.vmetrix.vcube.viewlayer.ui.VCubeUI;
@WebServlet(value = "/vqueryPivotData/*", asyncSupported = true)
@Component("flexmonsterServlet")
//@VaadinServletConfiguration(productionMode = true, ui = FlexmonsterUI.class)
public class FlexmonsterCompressorServlet extends VaadinServlet {
private static final long serialVersionUID = -4997305985202070360L;
@Override
protected void servletInitialized() throws ServletException {
super.servletInitialized();
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
try {
DatabaseBO db = DatabaseBO.getDatabaseFromPool( "VCUBE" );
Session session = db.getConnection();
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
String query = "Select * from VCUBE_USER.MAPPINGTEST1";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
InputStream inputStream = Compressor.compressDb(resultSet);
response.setContentType("text/plain");
try {
OutputStream outputStream = response.getOutputStream();
int length = 0;
byte[] buffer = new byte[102400]
; //100mb
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
outputStream.flush();
}
} catch (Throwable e) {
e.printStackTrace();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
Thanks in advance