Table of Contents

Instalación

En debian está en los repositorios.

Podemos también descargamos maven y ejecutar el comando:

./mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp

Si estamos detrás de un proxy configuramos la variable $HOME/./m2/settings.xml

<settings>
  <proxies>
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>username</username>
      <password>password</password>
      <host>10.10.10.10</host>
      <port>8080</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
  </proxies>
</settings>

Aplicación Hello World

Codigo fuente:
miappweb.tar.gz

Aplicación sola:
miappweb.war

Proyecto Hello World

Fuente: https://cwiki.apache.org/confluence/display/MAVEN/Tutorial%3A+Build+a+JAR+file+with+Maven+in+5+minutes

group id: org.iwanttobefreak.post
artifact id: java-archive
version: 1.0-SNAPSHOT

Creamos el siguiente pom.xml

<project>
 <modelVersion>4.0.0</modelVersion>
 <groupId>org.iwanttobefreak.post</groupId>
 <artifactId>java-archive</artifactId>
 <version>1.0-SNAPSHOT</version>
</project>

También podemos añadir la versión de java, me daba algún error porque era la 5 por defecto:

<properties>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
</properties>

Ahora creamos el código java en esta ruta:

mkdir -p src/main/java/org/iwanttobefreak/post/

El nombre del fichero .java, en este caso Main es la clase que declaramos en el código fuente

src/main/java/org/iwanttobefreak/post/Main.java
package org.iwanttobefreak.post;
public class Main {
  public static void main(String[] args) {
    System.out.println("Hello world");
  }
}

Compilamos el paquete:

mvn package

Nos crea el jar en el directorio target.

Lo ejecutamos:

java -cp ./target/java-archive-1.0-SNAPSHOT.jar org.iwanttobefreak.post.Main
Hello world

Proyecto WGET

package org.iwanttobefreak.post;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;

public class Main {
        public static void main(String[] args) {
                try {
                        URL url = new URL("http://www.google.es/");
                        BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
                        String strTemp = "";
                        while (null != (strTemp = br.readLine())) {
                                System.out.println(strTemp);
                        }
                } catch (Exception ex) {
                        ex.printStackTrace();
                }
        }
}

Proyecto POST

package com.iwanttobefreak.post;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import javax.net.ssl.HttpsURLConnection;

public class HttpURLConnectionExample {

	private final String USER_AGENT = "Mozilla/5.0";

	public static void main(String[] args) throws Exception {

		HttpURLConnectionExample http = new HttpURLConnectionExample();

		System.out.println("\nTesting 2 - Send Http POST request");
		http.sendPost();

	}

	// HTTP POST request
	private void sendPost() throws Exception {

		String url = "http://example.com/main.do";
		URL obj = new URL(url);
		HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();

		//add reuqest header
		con.setRequestMethod("POST");
		con.setRequestProperty("User-Agent", USER_AGENT);
		con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
                con.setRequestProperty("Content-Type", "application/json");

                //Petición JSON si tiene comillas, las trampeamos con \
		String urlParameters = "{\"DatosPersonales\":{\"Nombre\":\"Aitor\",\"Apellido\":\"Tillas\"},\"DatosFisicos\":{\"Ojos\":\"Azules\",\"Pelo\":\"Negro\"}}";

		// Send post request
		con.setDoOutput(true);
		DataOutputStream wr = new DataOutputStream(con.getOutputStream());
		wr.writeBytes(urlParameters);
		wr.flush();
		wr.close();

		int responseCode = con.getResponseCode();
		System.out.println("\nSending 'POST' request to URL : " + url);
		System.out.println("Post parameters : " + urlParameters);
		System.out.println("Response Code : " + responseCode);

		BufferedReader in = new BufferedReader(
		        new InputStreamReader(con.getInputStream()));
		String inputLine;
		StringBuffer response = new StringBuffer();

		while ((inputLine = in.readLine()) != null) {
			response.append(inputLine);
		}
		in.close();
		
		//print result
		System.out.println(response.toString());
	}
}

Proyecto Out Of Memory OOM

public class TestOOM
{
public static void main(String ar[])
{
String test[]=new String[Integer.MAX_VALUE];
for(int i=0;i<Integer.MAX_VALUE;i++)
{
test[i]="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
}
}
}

Monitorizar con javamelody

http://code.google.com/p/javamelody/wiki/UserGuide#Setup

Hay que descargar los ficheros (dependiendo versión)
http://code.google.com/p/javamelody/downloads/list

javamelody-x.x.x.jar 

http://javamelody.googlecode.com/files/jrobin-1.5.9.jar

jrobin-x.x.x.jar 

En la carpeta:

http://javamelody.googlecode.com/files/jrobin-1.5.9.jar

Editar el fichero web.xml de src/main/webapp/WEB-INF
Añadir las líneas a final de la entrada <web-app>:

        <filter>
                <filter-name>monitoring</filter-name>
                <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
        </filter>
        <filter-mapping>
                <filter-name>monitoring</filter-name>
                <url-pattern>/*</url-pattern>
        </filter-mapping>
        <listener>
                <listener-class>net.bull.javamelody.SessionListener</listener-class>
        </listener>

Volvemos a compilar app desde el directorio de mi aplicación:

mvn package

Despliego el war