Poorman jnlp dynamic servlet

I was tired from changing jnlp codebase address between test and production environment. So I wrote this servlet that serves a jnlp file, but with the right codebase address, in accord with the server address.

Dont forget to set the jnlp mime-type (application/x-java-jnlp-file) in your jee server. I hope you like it.

=== JnlpServlet.java
package org.veiogaga;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class JnlpServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		String httpScheme = request.getScheme();
		String serverAdress = request.getServerName();
		int serverPort = request.getServerPort();
		String contextRoot = request.getContextPath();		

		response.setContentType("application/x-java-jnlp-file");
        PrintWriter out = response.getWriter();
        out.println(getJnlp(httpScheme,serverAdress,serverPort,contextRoot));
        out.close();

	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		execute(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		execute(request, response);
	}

	//adjust accordingly with your requirements
	private String getJnlp(String httpScheme, String  serverAdress, int serverPort, String contextRoot){

		//String codebase = "http://localhost:8080/MyApp/";
		String codebase = httpScheme+"://"+serverAdress+":"+serverPort+"/"+contextRoot+"/";
		String href =  "myapp.jnlp";

		        String jnlp = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"

                + "<jnlp codebase=\"%s\" href=\"%s\" spec=\"1.0+\">\n" //codebase

                + "<information>\n"
                + "<title>MyApp title </title>\n"
                + "<vendor>veioGaga Inc.</vendor>\n"
                + "<homepage href=\"http://www.example.org\" />\n"
                + "<description>This app will ghange the world</description>\n"
                + "<description kind=\"short\">just a little bit</description>\n"
                + "<offline-allowed />\n"
                + "</information>\n"
                + "<security>\n"
                + "<all-permissions />\n"
                + "</security>\n"
                + "<resources>\n"
                + "<j2se version=\"1.5+\" />\n"
                + "<jar eager=\"true\" href=\"jnlp/myapp.jar\" main=\"true\" />\n" 

                + "<jar href=\"jnlp/myapp.jar\" />\n"
                + "</resources>\n"
                + "    <application-desc main-class=\"org.veiogaga.app.WorldGui\" />\n"
                + "</jnlp>";

		return String.format(jnlp, codebase,href,httpScheme,serverAdress,serverPort,contextRoot);
	}
}
=== servlet

=== web.xml:
<servlet>
    <description> Generate JNLP dinamicaly</description>
    <display-name>JnlpServlet</display-name>
    <servlet-name>JnlpServlet</servlet-name>
    <servlet-class>org.veiogaga.JnlpServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>JnlpServlet</servlet-name>
    <url-pattern>/myapp.jnlp</url-pattern>
</servlet-mapping>

===

serviços de manutenção: cobram muito, fazem pouco

A qualidade dos serviços prestados em São Paulo deixa a desejar. Será que se repete em outas cidades? Será pior ? Nos acostumamos com a baixa qualidade dos serviços? Temo que sim, infelizmente :-(.

Paguei caro para mandar arrumar o carro. R$460,00: a vista, em dinheiro e sem pedir desconto. É, tenho essa mania de honestidade sendo uma das minhas frases preferidas  “always try to do the right thing”, dita por  Da Mayor, um personagem do filme de Spike Lee  – faça a coisa certa, embora eu tenha minha própria interpretação do sentido da frase.

Mas a qualidade nao foi das melhores. Arrumaram o óleo vazando, mas quebraram a mangueira de gasolina e fiquei sem gasolina depois de alguns quilômetros.Parei em outra oficina pois não dava para voltar na que fez o des-serviço. Desconfio ate de má fé, racismo , etc. Mas nesses casos é dificil provar pois é tudo muito velado, discreto.

Outro problema foi a nota fiscal, quero dizer, o recibo. Uma foto cópia meio apagada, com pouca tinta, quase ilegivel. Da a impressao que foi feito para se desgastar com o tempo,  nao servindo como prova do que foi feito.

O mecânico fez o serviço tão rápido que até esqueceu uma ferramenta no carro.

Por outro lado, é o que recebemos por procurar alternativas rápidas: pequenas oficinas, mal equipadas e com pessoal  pouco qualificado.

Deveria ter uma especie de pague-seguro na vida real. Pagamos , mas só recebem se o serviço for bem executado. Ou recebem tudo , mas aos poucos, pois dá tempo de verificarmos a qualidade do serviço. Isso pode ser feito com cheques pré-datados, mas parece ser  um mau uso do recurso bancário.

Um sistema de pagamento lento, com possibilidade de acionamento na justiça ou procon, com pontuação de devedor/pagador, logs (registros) das ocorrências (fotos, documentos, etc) seria ideal, pois aumentaria a qualidade do serviço e tornaria o processo menos estressante. Seria bom até para o prestador de serviço, que teria sua credibilidade aumentada.