Mostrando entradas con la etiqueta Java. Mostrar todas las entradas
Mostrando entradas con la etiqueta Java. Mostrar todas las entradas

domingo, 1 de marzo de 2015

Java: How to use Generic Types to create a generics class

Java: How to use Generic Types to create a generics class


A generic type is a generic class or interface that is parameterized over types.

Las clases genéricas (con tipos genéricos) permiten, entre otras cosas, forzar la seguridad de los tipos creados por nosostros, en tiempo de compilación. También permiten abstraer comportamiento independientemente de tipo de objeto que se manipule.

Esto se puede apreciar con un ejemplo:

Example diagram




Example code


//........................................................
//File name: IMyGenericClass.java

package com.daro.generic.example.generic;

import java.util.List;

public interface IMyGenericClass<T> {

public void printClassName(T p);
public List<T> list(Class<T> clazz);

}

//........................................................
//File name: MyGenericClass.java

package com.daro.generic.example.generic;

import com.daro.generic.example.generic.IMyGenericClass;
import java.util.ArrayList;
import java.util.List;

public abstract class MyGenericClass<T> 
                implements IMyGenericClass<T> {

private final Class<T> type; public MyGenericClass(Class<T> type) { this.type = type; } public Class<T> getMyType() { return this.type; }

@Override
public void printClassName(T p) {
System.out.println ("Class name: " + p.getClass().getName());
}

@SuppressWarnings("unchecked")
@Override
public List<T> list(Class<T> clazz) {
@SuppressWarnings("rawtypes")
Object object = null;
try {
object = clazz.newInstance(); 
                         //equal to this.getMyType().newInstance()
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
List<T> list = new ArrayList<T>();
list.add((T)object);
return list;
}

}

//........................................................
//File name: MyGenericClassImpl.java

package com.daro.generic.example.generic;

import java.util.List;
import com.daro.generic.example.generic.MyGenericClass;
import com.daro.generic.example.generic.MyClass;


public class MyGenericClassImpl extends MyGenericClass<MyClass> {

public MyGenericClassImpl() {
super(MyClass.class);
}

public void doSomething() {
   MyClass myClass = new MyClass();
List<MyClass> myList = this.list(MyClass.class);
this.printClassName(myClass);
System.out.println("To string my object: " + myList.get(0).toString()); 
}
   
public static void main(String[] args) {
        System.out.println("Running test!"); // Display the string.
MyGenericClassImpl myGenericClassImpl = new MyGenericClassImpl();
myGenericClassImpl.doSomething();
}

}

//........................................................
//File name: MyClass.java

package com.daro.generic.example.generic;

import java.io.Serializable;

public class MyClass {

public String toString(){
return "MyClass Example";
}

}


Running Example


Result of run MyGenericClassImpl:

Running test!
Class name: com.daro.generic.example.generic.MyClass

To string my object: MyClass Example



References:

http://docs.oracle.com/javase/tutorial/java/generics/types.html
http://www.arquitecturajava.com/uso-de-java-generics/
http://jonsegador.com/2012/10/clases-y-tipos-genericos-en-java/




jueves, 13 de noviembre de 2014

Java: Hibernate 4 - Session Filter with Spring MVC

Configuracion de Filtro de Session de Hibernate en Spring


Cuando configuramos Hibernate en Spring (Configuring OpenSessionInViewFilter with Hibernate 4 and Spring 4 -Spring MVC-.) necesitamos configurar un filtro de SessionFactory para no encontrarnos con el problema de LazyInitializationException.


Problema:


Error reading org.hibernate.LazyInitializationException: could not initialize proxy - no Session
Estado HTTP 500 - javax.el.ELException: Error reading 'atributoField' en el tipo MY.CLASS.OBJECT_INSTANCE_$$_jvst41b_2
type Informe de Excepción
mensaje javax.el.ELException: Error reading 'atributoField' en el tipo MY.CLASS.OBJECT_INSTANCE_$$_jvst41b_2
descripción El servidor encontró un error interno que hizo que no pudiera rellenar este requerimiento.
excepción
org.apache.jasper.JasperException: javax.el.ELException: Error reading 'atributoField' en el tipo MY.CLASS.OBJECT_INSTANCE_$$_jvst41b_2
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:209)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:267)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1217)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1005)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:952)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
causa raíz

javax.el.ELException: Error reading 'atributoField' en el tipo MY.CLASS.OBJECT_INSTANCE_$$_jvst41b_2
javax.el.BeanELResolver.getValue(BeanELResolver.java:110)
org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
org.apache.el.parser.AstValue.getValue(AstValue.java:183)
org.apache.el.parser.AstEmpty.getValue(AstEmpty.java:46)
org.apache.el.parser.AstNot.getValue(AstNot.java:43)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:967)
org.apache.jsp.WEB_002dINF.view.person_jsp._jspx_meth_c_005fif_005f0(person_jsp.java:256)
org.apache.jsp.WEB_002dINF.view.person_jsp._jspx_meth_form_005fform_005f0(person_jsp.java:184)
org.apache.jsp.WEB_002dINF.view.person_jsp._jspService(person_jsp.java:114)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:209)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:267)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1217)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1005)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:952)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
causa raíz

org.hibernate.LazyInitializationException: could not initialize proxy - no Session
org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:165)
org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:286)
org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185)
MY.CLASS.OBJECT_INSTANCE_$$_jvst41b_2.getatributoField(Person_$$_jvst41b_2.java)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
javax.el.BeanELResolver.getValue(BeanELResolver.java:99)
org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
org.apache.el.parser.AstValue.getValue(AstValue.java:183)
org.apache.el.parser.AstEmpty.getValue(AstEmpty.java:46)
org.apache.el.parser.AstNot.getValue(AstNot.java:43)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:967)
org.apache.jsp.WEB_002dINF.view.person_jsp._jspx_meth_c_005fif_005f0(person_jsp.java:256)
org.apache.jsp.WEB_002dINF.view.person_jsp._jspx_meth_form_005fform_005f0(person_jsp.java:184)
org.apache.jsp.WEB_002dINF.view.person_jsp._jspService(person_jsp.java:114)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:209)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:267)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1217)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1005)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:952)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/7.0.56.


Solución:

La solución es agregar una definición de un filtro en el archivo de configuración web.xml como sigue:


<!-- Spring Open Session In View Pattern filter -->
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
                <!-- Hibernate 4 SessionFactory Bean (reference) -->
<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>hibernate4AnnotatedSessionFactory</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

 Y tener configurado una definición de Hibernate 4 SessionFactory Bean en el archivo de configuración application-config.xml (o applicationContext.xml) como sigue:

<!-- Hibernate 4 SessionFactory Bean (definition) -->
<beans:bean id="hibernate4AnnotatedSessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource" />
<beans:property name="annotatedClasses">
<beans:list>
<beans:value>com.daro.rental.housing.model.PersonTable</beans:value>
<beans:value>com.daro.rental.housing.model.HouseTable</beans:value>
</beans:list>
</beans:property>
<beans:property name="hibernateProperties">
<beans:props>
<beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect
</beans:prop>
<beans:prop key="hibernate.show_sql">true</beans:prop>
</beans:props>
</beans:property>
</beans:bean>


Referencias:

-Configurar el filtro de SessionFactory: http://cchweblog.wordpress.com/2009/10/10/using-opensessioninviewfilter-in-spring-web-application/
-Crear mi propio filtro de SessionFactory: http://programacionspring.blogspot.com.ar/2012/01/configuracion-hibernate-en-spring.html





miércoles, 12 de noviembre de 2014

Java: Install Maven on Ubuntu 12



sudo apt-get install maven
mvn -version
Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.7.0_71, vendor: Oracle Corporation
Java home: /usr/lib/jvm/jdk1.7.0_71/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.2.0-69-generic", arch: "amd64", family: "unix"

Probar en eclipse:

Crear un Maven Project.
Si al crear un proyecto Maven en eclipse nos sale este error: "Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart:RELEASE from any of the configured repositories"

Podemos ir a Windows-Preference-Maven-UserSettings y agregar el el archivo setting.xml: /etc/maven/settings.xml

Tambien podemos editar el proxy (colocando la informacion necesaria) si fuera necesario editando /etc/maven/settings.xml:
     <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>dario</username>
      <password>pass</password>
      <host>proxy.corp.daro.com</host>
      <port>1232</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>

Y agregar:

<mirror>
  <id>ibiblio.org</id>
  <url>http://mirrors.ibiblio.org/maven2</url>
  <mirrorOf>central</mirrorOf>
</mirror>


To Remove:

sudo apt-get remove maven
sudo apt-get purge maven

martes, 11 de noviembre de 2014

Java: How to Install Tomcat 7 on Ubuntu 12.10 - Guide

Instalar Tomcat 7 sobre Ubuntu 12

Download and install:


Download from zip: http://tomcat.apache.org/download-70.cgi

tar xvzf apache-tomcat-7.0.8.tar.gz
sudo mv apache-tomcat-7.0.8/ /usr/share/tomcat7
#sudo geany /etc/environment
#sudo nano /etc/environment
sudo vim /etc/environment
JAVA_HOME="/usr/lib/jvm/jdk1.7.0_71"
JRE_HOME="/usr/lib/jvm/jdk1.7.0_71/jre"

sudo vim /usr/share/tomcat7/bin/catalina.sh
#insert the JAVA_HOME and JRE_HOME after the first line
JAVA_HOME="/usr/lib/jvm/jdk1.7.0_71"
JRE_HOME="/usr/lib/jvm/jdk1.7.0_71/jre"

Configure Users:

sudo geany /usr/share/tomcat7/conf/tomcat-users.xml
#Add user into file tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="admin"/>
<user username="usuario" password="contrasena" roles="manager-gui,admin-gui,manager,admin,manager-script,admin-script"/>

Configure Bash:

#Add in .bashrc :
export CATALINA_HOME=/usr/share/tomcat7
export WEBAPPS_HOME=/usr/share/tomcat7/webapps
alias tomcat_start='sudo /usr/share/tomcat7/bin/startup.sh'
alias tomcat_stop='sudo /usr/share/tomcat7/bin/shutdown.sh'

Start and stop:


#Start server:
#sudo /usr/share/tomcat7/bin/startup.sh
tomcat_start

#Web Test:
http://127.0.0.1:8080/

#Stop server:
#sudo /usr/share/tomcat7/bin/shutdown.sh
tomcat_stop

See the version:

$CATALINA_HOME/bin/version.sh

Using CATALINA_BASE:   /usr/share/tomcat7
Using CATALINA_HOME:   /usr/share/tomcat7
Using CATALINA_TMPDIR: /usr/share/tomcat7/temp
Using JRE_HOME:        /usr/lib/jvm/jdk1.7.0_71/jre
Using CLASSPATH:       /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.56
Server built:   Sep 26 2014 12:08:24
Server number:  7.0.56.0
OS Name:        Linux
OS Version:     3.2.0-69-generic
Architecture:   amd64
JVM Version:    1.7.0_71-b14
JVM Vendor:     Oracle Corporation

View Status:


ps -A | grep java
3453 pts/0    00:00:04 java
(Nota: para matar el proceso podemos usar: kill -9 3453)

ps -ax | grep tomcat7
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
3936 pts/0    Sl     0:04 /usr/lib/jvm/jdk1.7.0_71/jre/bin/java -Djava.util.logging.config.file=/usr/share/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Xms1024m -Xmx1024m -XX:MaxPermSize=1024m -XX:MaxNewSize=128m -XX:NewSize=128m -XX:SurvivorRatio=128 -XX:MaxTenuringThreshold=0 -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseTLAB -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses -Dgrails.env=prod -Dspring.profiles.active=prod -Dport-offset=0 -Djboss.socket.binding.port-offset=0 -Dajp.port=8009 -Djboss.http.port=8080 -Dhttp.maxthreads=1000 -Dshutdown.port=8005 -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true -Djava.endorsed.dirs=/usr/share/tomcat7/endorsed -classpath /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/usr/share/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.io.tmpdir=/usr/share/tomcat7/temp org.apache.catalina.startup.Bootstrap start
3979 pts/0    S+     0:00 grep --color=auto tomcat7

sudo netstat -tapen | grep ":8080 "
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      0          30018       3565/java

Web Admin:


(Nota: put the user and pass located into tomcat-users.xml)


References:
http://diegobenna.blogspot.com.ar/2011/01/install-tomcat-7-in-ubuntu-1010.html
http://www.liquidweb.com/kb/how-to-install-apache-tomcat-7-on-ubuntu-12-04/

lunes, 10 de noviembre de 2014

Java: Install JDK 7 on Ubuntu


Installing java-7-oracle apt-get 


sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
sudo apt-get install oracle-java7-set-default

sudo vim /etc/environment
Agregar: JAVA_HOME="/usr/lib/jvm/java-7-oracle"
O hacer:
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

Installing jdk1.7.0_71 from tar.gz


wget http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.tar.gz
#Download from: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
sudo mv jdk-7u71-linux-x64.tar.gz /usr/lib/jvm/
cd /usr/lib/jvm/
sudo tar zxvf jdk-7u71-linux-x64.tar.gz
sudo rm jdk-7u71-linux-x64.tar.gz
#Now enable Java (by running individually):
sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                     Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-oracle/jre/bin/java   2         auto mode
* 1            /usr/lib/jvm/java-7-oracle/jre/bin/java   2         manual mode
  2            /usr/lib/jvm/jdk1.7.0_71/bin/java         1         manual mode

Press enter to keep the current choice[*], or type selection number: 2

sudo update-alternatives --config javac
There are 2 choices for the alternative javac (providing /usr/bin/javac).

  Selection    Path                                  Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-oracle/bin/javac   2         auto mode
* 1            /usr/lib/jvm/java-7-oracle/bin/javac   2         manual mode
  2            /usr/lib/jvm/jdk1.7.0_71/bin/javac     2         manual mode

Press enter to keep the current choice[*], or type selection number: 2
sudo update-alternatives --config javaws
There are 2 choices for the alternative javaws (providing /usr/bin/javaws).

  Selection    Path                                       Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-oracle/jre/bin/javaws   2         auto mode
* 1            /usr/lib/jvm/java-7-oracle/jre/bin/javaws   2         manual mode
  2            /usr/lib/jvm/jdk1.7.0_71/bin/javaws         2         manual mode

Press enter to keep the current choice[*], or type selection number: 2


#sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0_71/bin/java" 2
#sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0_71/bin/javac" 2
#sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0_71/bin/javaws" 2

sudo vim /etc/environment
Agregar: JAVA_HOME="/usr/lib/jvm/jdk1.7.0_71"

O agregar en el .bashrc:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_71


Close all browsers.

Create a Mozilla plugins folder in your home directory:

user@host:~$ mkdir ~/.mozilla/plugins/

Create a symbolic link to your Mozilla plugins folder. For 64-bit systems, replace ‘i386’ with ‘amd64’:

user@host:~$ ln -s /usr/lib/jvm/jdk1.7.0_71/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/

Testing:

user@host:~$ java -version

Output:
java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)

javac -version
javac 1.7.0_72

Verify JRE at http://java.com/en/download/installed.jsp.


References:
http://askubuntu.com/questions/56104/how-can-i-install-sun-oracles-proprietary-java-jdk-6-7-8-or-jre


domingo, 2 de noviembre de 2014

Java: JBoss - Configuration of Persistence with JPA and MySQL

Java: JBoss - Configuración de Persistencia con JPA...

¿Cómo configurar el Data Source (MySQL) y persistencia con JBOSS (7.1.1) y JPA en un proyecto Java?


Si queremos usar persistence JPA con JBoss y MySQL podemos hacer lo siguiente para configurar el Datasource de MySQL y buestra base de datos:

1) Instalar JBoss-as-7.1.1.Final


Primero debemos tener instalados JBoss (por ejemplo jboss-as-7.1.1.Final).

2) MYSQL connector


Bajar el JAR de mysql connector e instalarlo en <DIR_de_install>\modules\com\mysql\main\:

Por ejemplo:
C:\jboss-as-7.1.1.Final\modules\com\mysql\main\mysql-connector-java-5.1.33-bin.jar

Editar C:\jboss-as-7.1.1.Final\modules\com\mysql\main\module.xml

<?xml version="1.0" encoding="UTF-8"?>

<!--  

C:\jboss-as-7.1.1.Final\modules\com\mysql\main\mysql-connector-java-5.1.33-bin.jar

  ~ JBoss, Home of Professional Open Source.  
  ~ Copyright 2010, Red Hat, Inc., and individual contributors  
  ~ as indicated by the @author tags. See the copyright.txt file in the  
  ~ distribution for a full listing of individual contributors.  
  ~  
  ~ This is free software; you can redistribute it and/or modify it  
  ~ under the terms of the GNU Lesser General Public License as  
  ~ published by the Free Software Foundation; either version 2.1 of  
  ~ the License, or (at your option) any later version.  
  ~  
  ~ This software is distributed in the hope that it will be useful,  
  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of  
  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU  
  ~ Lesser General Public License for more details.  
  ~  
  ~ You should have received a copy of the GNU Lesser General Public  
  ~ License along with this software; if not, write to the Free  
  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  
  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. 
  -->  

<module xmlns="urn:jboss:module:1.0" name="com.mysql">
  <resources>
    <resource-root path="mysql-connector-java-5.1.33-bin.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
  </dependencies>
</module>


3) Agregar el Datasource en JBoss


Editar standalone.xml de JBoss:


    <datasources>
             
<datasource jndi-name="java:jboss/datasources/MysqlDS" enabled="true"
                      use-java-context="true" jta="true" use-ccm="true" pool-name="MysqlDS">
<connection-url>jdbc:mysql://localhost:3306/MY_DATA_BASE</connection-url>
<driver>mysql</driver>
<pool>
<max-pool-size>30</max-pool-size>
</pool>
<security>
<user-name>USER</user-name>
<password>my_sql_pass</password>
</security>
</datasource>
                <drivers>
  
<driver name="mysql" module="com.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
</driver>
                </drivers>
            </datasources>
         

 4) Configurar Persistence en el proyecto


Editar o agregar: src/META-INF/persistence.xml

 <?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">
   <persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:jboss/datasources/MysqlDS</jta-data-source>
      <!-- "java:jboss/datasources/MysqlDS" apunta al datasource del archivo STANDALONE.XML de JBOSS  -->
      <!-- Alli esta configurada jdbc:mysql://localhost:3306/MY_DATA_BASE  -->
      <class>package.domain.entity.MyTableEntity</class>
   
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
         <property name="hibernate.show_sql" value="false" />
      </properties>
   </persistence-unit>
</persistence>

 4) Configurar EntityManagerFactory en el código

...
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("persistenceUnit");
EntityManager em = entityManagerFactory.createEntityManager();
...

5) Lanzar JBoss

Si todo está bien JBoss debería loguear las líneas siguientes (en log o en consola):
...
20:14:33,717 INFO  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 27) JBAS010404: Deploying non-JDBC-compliant driver class com.mysql.jdbc.Driver (version 5.1)
...
20:14:35,941 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) JBAS010400: Bound data source [java:jboss/datasources/MysqlDS]
...
20:14:36,037 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015876: Starting deployment of "RentalHousingWebService.war"
20:14:37,258 INFO  [org.jboss.as.jpa] (MSC service thread 1-1) JBAS011401: Read persistence.xml for persistenceUnit
...





lunes, 13 de octubre de 2014

Java: Static Analysis

Inspección y análisis de código Java.



1) Complejidad ciclomática (Cyclomatic Complexity)



2) Covertura de test (Coverage)



3) Análisis de dependencia (Dependancy Analysis)



4) Análisis de Bytecode  (Bytecode Analysis)



5) Análisis de código fuente (Source Code Analysis)


6) Monitoreo de memoria


JPS es similar a PS de linux y sirve para averiguar los procesos que estan corriendo en la VM java. Y JSTAT es una herramienta para benchmark para java incluida en el JDK.
Ejemplo para consultar la memoria PermGen que esta utilizando el proceso 666:

       jstat -gcpermcapacity 666


Ejemplo: jconsole processID



Referencia:
-Top 5 Static Analysis Plugins for Eclipse.
-Memoria PermGen en Java.
-Oracle: Using Jconsole.
-5 things you didn't know about ... Java performance monitoring, Part 2.
-InstallVisualVM and JSTAT.


viernes, 8 de agosto de 2014

Java: Evolución de Java

Listas de novedades y cambios en la evolución de Java.


  • Java 8, JSE 8 (2014):

8)a) Eliminación del espacio de memoria (remove PermGen).
8)b) Compact Profiles (Small VM).
8)c) Expresiones Lambda (Explicación, programación funcional con funciones anónimas y clausuras)
8)d) Métodos predeterminados en interfaces (Default Methods).
8)e) API Stream (java.util.stream) con estilo funcional y paralelismo.
8)f) Nuevo API para Fechas (java.time).
8)g) Nuevo motor Javascript (Nashorn).
8)h) Soporte estándar de codificación Base64.
8)i) Anotaciones en cualquier uso de tipos.
8)j) Java HotSpot más Mission Control.
8)k) Mejoras en JDBC (JDBC 4.2).
Ver novedades: Lista completa de novedades,
Tutorial:  Oracle Java Tutorial.
Download: JDK 8.

  • Java 7, JSE 7 (2011), Dolphin:

7)a) Project coin. (JSR334 Mejoras para la productividad)
7)b) Strings en switchs.
7)c) Gestión automática de recursos en sentencias try-catch.
7)d) Multicatch.
7)e) Rethrow de excepciones más precisos.
7)f) Operador diamante <>.
7)g) Literales binarios.
7)h) Guiones bajos en literales numéricos.
7)i) Fork/Join y utilidades de concurrencia.
7)j) Mejoras en trabajo con archivos y carpetas.

Ver novedades:
Tutorial:
Download:
Java EE: API Java EE7, Java EE7 Specification, Oracle Announces Availability of Java Platform Enterprise Edition 7.

  • Java 6, JSE 6 (2006), Mustang: 
Estuvo en desarrollo bajo la JSR 270.

6)a) Lenguajes de scripting.
6)b) API para el compilador.
6)c) Nuevas anotaciones.
6)d) Nueva API para XML (StaX).

Ver novedades:
Tutorial:
Download:
Java EE: API Java EE6, Java EE6 Specification.

  • Java 5, J2SE 1.5 (2004), Tiger: 
Desarrollado bajo JSR 176.

5)a) Generics.
5)b) Bucle for mejorado.
5)c) Autoboxing/unboxing.
5)d) Enums.
5)e) Varargs.
5)f) Static import.
5)g) Anotaciones.

Ver novedades:
Tutorial: Free Java Certification Training & Java Core Training.
Download:
Java EE: API Java EE5, Java EE5 Specification.

  • Java 4, J2SE 1.4 (2002), Merlin: 
Primer lanzamiento de la plataforma Java desarrollado bajo el Proceso de la Comunidad Java como JSR 59.


  • Java 3, J2SE 1.3 (2000), Kestrel: 

  • Java 2,  J2SE 1.2 (1998), Playground:

  • Java 1 (1996-1997): 



- JDK 1.1 (1997) — modelo de eventos AWT, clases internas (inner classes), JavaBeans, JDBC (Java Database Connectivity), RMI (Remote Method Invocation).

- JDK 1.0 (1996) — Primer lanzamiento.

sábado, 24 de noviembre de 2012

Java: Configure Eclipse

Configure Eclipse



# Install Aptana Studio for Web Developers into Eclipse

Open Eclipse and go to Help -> Install New Software and paste the URL (http://download.aptana.com/studio3/plugin/install)
Now, few more Next Next ..


# Install Helios

1- Help->Software Updates->Find and Install.
2- Install/Update con 2 opciones. Seleccionamos la opción Search for new features to install.
Select Helios: http://download.eclipse.org/releases/helios
and installit...

# Install Subclipse (Subversion client) in Eclipse (if is necesary)

1- Help->Software Updates->Find and Install.
2- Install/Update con 2 opciones. Seleccionamos la opción Search for new features to install.
3- Introduciremos un nuevo sitio, pulsa sobre el boton New Remote Site.
4- Nombre y URL del nuevo lugar de búsqueda introducimos alguna de las siguientes opciones:

Subclipse Links for 1.8.x Release:
Changelog: http://subclipse.tigris.org/subclipse_1.8.x/changes.html
Eclipse update site URL: http://subclipse.tigris.org/update_1.8.x
Zipped downloads: http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240
Subclipse Links for 1.6.x Release:
Changelog: http://subclipse.tigris.org/subclipse_1.6.x/changes.html
Eclipse update site URL: http://subclipse.tigris.org/update_1.6.x
Zipped downloads: http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240
Subclipse Links for 1.4.x Release:
Changelog: http://subclipse.tigris.org/subclipse_1.4.x/changes.html
Eclipse update site URL: http://subclipse.tigris.org/update_1.4.x
Zipped downloads: http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240
...see more...http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA

5- Finalmente pulsamos sobre Ok nos aparecerá el repositorio Subversive lo marcamo.
6- Aceptamos la licencia y Finish


References:
- Instrucciones para instalar subversion
- Subclipse: plugin de Subversion para Eclipse.
- Configurar plugin subversion en eclipse (subclipse).

Java: Install Eclipse on Ubuntu 12.04

Forma estándar de instalar Eclipse en Ubuntu

Precondición: Debemos tener instalado java.

# Remover Eclipse si esta Instalado previamente
#----------------------------------------------------------------------------------------------------

# Install Eclipse Platform    (standard form)
#----------------------------------------------------------------------------------------------------

sudo apt-get install eclipse-platform

# Extras:
# Install JDT for Java Development If you want
sudo apt-get install eclipse-jdt

# Install CDT for C/C++ Development If you want
sudo apt-get install eclipse-cdt

#Launch Eclipse Platform
eclipse

# If an error similar to the following:
# An error has occurred. See the log file /home/username/.eclipse/org.eclipse.platform_3.7.0_155965261/configuration/1353802599085.log.
# Then do following:
ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86/
#And on Ubuntu 12.04 64 bit try:
ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/

# The Result folder Structure on Linux system is following:
#      /usr/bin/eclipse #sh
#      /usr/share/eclipse
#      /usr/lib/eclipse
#      /home/username/.eclipse/
#      /home/username/.config/eclipse/
#      /etc/eclipse.ini


Instalando desde un zip en Ubuntu


Primero nos aseguramos de si nuestro sistema es 32bits o 64bits para saber que copia bajar de Eclipse:

uname -a

Luego bajamos una copia en un zip:

Eclipse Luna: https://www.eclipse.org/downloads/


Descomprimimos en nuestro "home" y editamos el archivo "eclipse.desktop" que va a funcionar como acceso directo que lanza la aplicación (ver: http://difusal.blogspot.com.ar/2014/07/how-to-install-eclipse-luna-44-on-ubuntu.html).




References:
- How to Install Eclipse IDE on Ubuntu 12.04
- Instalando Eclipse Indigo en Ubuntu (u otro Linux)
- Eclipse 4.2 (JUNO) in Ubuntu 12.04.

- Youtube: Install Java and Eclipse IDE into Ubuntu Desktop 12.04.
- Youtube: Como instalar Eclipse Indigo en Ubuntu 10.04.

- How to install Eclipse in folder independent? 

Eclipse Luna:
https://www.eclipse.org/downloads/
http://ubuntuhandbook.org/index.php/2014/06/install-latest-eclipse-ubuntu-14-04/
http://difusal.blogspot.com.ar/2014/07/how-to-install-eclipse-luna-44-on-ubuntu.html

Java: Remove Eclipse from Ubuntu

# Remover Eclipse from Ubuntu 12.04
#----------------------------------------------------------------------------------------------------

sudo apt-get remove --purge eclipse
sudo apt-get autoremove eclipse
sudo rm -r /usr/lib/eclipse

#Remove files from yout home (example username user)
cd /home/username
sudo rm -r ~/.eclipse/
sudo rm -r ~/.config/eclipse/

Nota: In graphical environment go tu Ubuntu Software Center and remove it.

Java: Install Java JDK 6.0 on Ubuntu 12.04


Instalar Sun (Oracle) Java 6 JDK en Ubuntu 12.04


# Instalar sun-java6-jdk sobre ubuntu 12.04 usando Terminal
#----------------------------------------------------------------------------------------------------

sudo add-apt-repository ppa:flexiondotorg/java
sudo apt-get update
sudo apt-get install sun-java6-jdk sun-java6-plugin


sudo update-alternatives --config java

There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                     Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-oracle/jre/bin/java   1062      auto mode
* 1            /usr/lib/jvm/java-6-sun/jre/bin/java      63        manual mode
  2            /usr/lib/jvm/java-7-oracle/bin/java       1         manual mode
  3            /usr/lib/jvm/java-7-oracle/jre/bin/java   1062      manual mode

Press enter to keep the current choice[*], or type selection number: 1

sudo update-alternatives --config javac

There are 2 choices for the alternative javac (providing /usr/bin/javac).

  Selection    Path                                  Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-oracle/bin/javac   1062      auto mode
  1            /usr/lib/jvm/java-6-sun/bin/javac      63        manual mode
  2            /usr/lib/jvm/java-7-oracle/bin/javac   1062      manual mode

Press enter to keep the current choice[*], or type selection number: 1

java -version

java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) Server VM (build 20.5-b03, mixed mode)


References:
- Instalar Sun (Oracle) Java 6 JDK en Ubuntu 12.04 .
- Install Java JDK 6.0 update 31 on Ubuntu 12.04 LTS.

Java: Uninstall openjdk from ubuntu


# Desinstalar openjdk de ubuntu
#----------------------------------------------------------------------------------------------------

sudo apt-cache search openjdk
sudo update-alternatives --config java

sudo apt-get --purge remove openjdk-6-jre openjdk-6-doc openjdk-6-jre-headless openjdk-6-jre-lib
sudo apt-get autoremove




References:
- http://yoodey.com/removing-openjdk-jre-ubuntu-1010-ec2-amazon-and-install-sun-java-6-jre-jdk