Estas en:

Catálogo de servicios
Autentia (PDF 6,2MB)

tríptico de Autentia
En formato comic...

Acceso de usuarios registrados:

Deseo registrarme

He olvidado mis datos de acceso

Registra tu empresa:

Descubre las ventajas de registrar tu empresa en AdictosAlTrabajo...

Registrar mi empresa

Listado de empresas ya registradas

Google

Últimos tutoriales

+Noticias Destacadas

+Comentarios Cómic

  2009-08-28 - 11:17:42 AM
   rcanales escribío:
    Completamente de acuerdo contigo. Yo no se quien hace las cuentas en tu empresa [...]
  2009-08-28 - 07:01:44 AM
   Anonimo escribío:
    pues yo tengo el cuello rigido como una piedra porque el aire acondicionado esta [...]
  2009-07-23 - 10:32:12 PM
   Jaime escribío:
    definitivamente la parte mas divertida es la de programar, y la explotacion lo v [...]
  2009-05-13 - 11:26:33 PM
   williarim escribío:
    Quiero felicitar al autor de estas historietas! Gracias por compartir con todos [...]
  2009-05-13 - 04:40:59 PM
   rcanales escribío:
    Hola Brunoise: Todo tiene perspectiva. El función de tus forma de ser y ver e [...]

+Enlaces


Tutorial desarrollado por

Roberto Canales Mora

Creador y propietario de AdictosAlTrabajo.com, Director General de Autentia S.L., Ingeniero Técnico de Telecomunicaciones y Executive MBA por el Instituto de Empresa 2007. Perfíl Technorati

Experto en formación en: Dirección de proyectos informáticos, análisis y diseño UML, arquitectura Web, patrones de diseño y JEE a todos los niveles.

Puedes consultar mi CV y alguna de mis primeras aplicaciones (de los 90) aquí

Catálogo de servicios de Autentia

Descargar (6,2 MB)

Descargar en versión comic (17 MB)

AdictosAlTrabajo.com es el Web de difusión de conocimiento de Autentia.

Catálogo de cursos

Fecha de creación del tutorial: 2003-06-07

Creación y Despliegue de un EJB básico en Orión

He estado probando el servidor de aplicaciones Orion y la verdad es que es muy sencillito.

Una de las principales ventajas de las que me han hablado, es que si te lo montas en local y respetas la estructura de ficheros que te propone, puedes crear servlets y EJBs y probarlos sin necesidad de desplegarlos.

Lo que he hecho ha sido seguir la guía para la creación de un EJB básico y me he quedado francamente impresionado porque, y es una de las pocas veces en mi vida, que siguiendo las instrucciones y sin trucos y dar por hecho que sabes ademas 150 millones de cosas más, he conseguido poner el sistema en marcha en menos de una hora

Vamos a ir pasito a pasito:

Primero nos lo descargamos y lo instalamos. Al instalarlo tenemos que ejecutar un comando para introducir la password

 

 
Instalar el JSDK de JAVA
Asegurarse de tener la variable de entorno JAVA_HOME apuntando al directorio de instalación de Java
Descargarse ORION de www.orionserver.com
Descomprimir el fichero en un directorio
Ejecutar el comando (añadir password)      Java –jar orion.jar –install
Arrancar el servidor con      Java –jar orion.jar

Para probar instalación, desde una navegador, atacar al servidor.

El puerto por defecto es el 80, si se desea cambia, ir al fichero 
\orion\config\default-web-site.xml

y cambiar el parámetro
<web-site host="[ALL]" port="8090" display-name="Default Orion WebSite">

La estructura de ficheros que vamos a construir es:

 

Creamos el interfaz de nuestro EJB (ejemplorc.java)

 

package ejemplorc.ejb;
import java.rmi.*;
import javax.ejb.*;
public interface ejemplorc extends EJBObject
{
   public String muestraMensaje() throws RemoteException;
}
Creeamos el Bean (ejemplorcBean.java)

package ejemplorc.ejb;

import java.rmi.*;
import javax.ejb.*;

public class ejemplorcBean extends Object implements SessionBean {

public String muestraMensaje() {
return "<h1>Este es el mensaje de Roberto</h1>";
}

public void ejbCreate()
throws EJBException, RemoteException {
}

public void ejbActivate()
throws EJBException, RemoteException {
}

public void ejbPassivate()
throws EJBException, RemoteException {
}

public void ejbRemove()
throws EJBException, RemoteException {
}

public void setSessionContext(SessionContext context)
throws EJBException, RemoteException {
}

}

Creamos el Interfaz Home (ejemplorcHome.java)

package ejemplorc.ejb;

import java.rmi.*;
import javax.ejb.*;

public interface ejemplorcHome extends EJBHome 

{
public ejemplorc create() throws CreateException, RemoteException;
}

 

Creamos el descriptor del EJB (ejb-jar.xml) 

<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd">

<ejb-jar>
<description></description>
<enterprise-beans>
<session>
<display-name>El ejemplorc.ejb.ejemplorc Bean de Sesion</display-name>
<ejb-name>ejemplorc.ejb.ejemplorc</ejb-name>
<home>ejemplorc.ejb.ejemplorcHome</home>
<remote>ejemplorc.ejb.ejemplorc</remote>
<ejb-class>ejemplorc.ejb.ejemplorcBean</ejb-class>
<session-type>Stateless</session-type>
</session>
</enterprise-beans>

<assembly-descriptor>
<security-role>
<description>Users</description>
<role-name>users</role-name>
</security-role>
</assembly-descriptor>

</ejb-jar>

Creamos el Servlet que atacará al EJB (aunque ya veremos en otra ocasión que no es el modo más adecuado). Advertencia: Usad este código para probar que funciona .... para nada más .... porque no es muy adecuado el modo en que se crea el objeto (compraos un libro de EJB´s)

(ejemplorcServlet.java)

package ejemplorc.web;

import java.io.IOException;
import java.util.Date;
import java.util.Properties;
import javax.naming.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.rmi.PortableRemoteObject;


import ejemplorc.ejb.*;



public class ejemplorcServlet extends HttpServlet 
{

// constructor
public ejemplorcServlet() 
{
super();
trace("<init>");
}

// A reference to the remote `Hello' object
protected ejemplorc ejemplo;

// Initializes this servlet
public void init(ServletConfig config) throws ServletException 
{
super.init(config);
trace("init");

// Get the initial JNDI context using our settings
Context context;
try 
{
context = new InitialContext();
}
catch (Throwable exception) 
{
throw new ServletException("Unable to get initial JNDI context: " + exception.toString());
}

// Get a reference to the Hello home interface
ejemplorcHome miHome;

try 
{
Object boundObject = context.lookup("java:comp/env/ejb/ejemplorcHome");
miHome = (ejemplorcHome)PortableRemoteObject.narrow(boundObject,ejemplorcHome.class);
}
catch (Throwable exception) 
{
throw new ServletException("Unable to get home interface: " + exception.toString());
}

// Get a reference to a Hello instance
try 
{
ejemplo = miHome.create();
}
catch (Throwable exception) 
{
throw new ServletException("Unable to create Hello instance: " + exception.toString());
}

// Insanity check: Make sure we have a valid reference
if (ejemplo == null) {
throw new ServletException( "Unable to create Hello instance, create() returned null");
}
}

// Handles the HTTP GET request
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
trace("doGet");

ServletOutputStream out = response.getOutputStream();

response.setContentType("text/html");

// Get the answer from the bean
String answer;
try {
answer = ejemplo.muestraMensaje();
}
catch (Throwable exception) {
out.println("<HTML><BODY bgcolor=\"#FFFFFF\">");
out.println("Time stamp: " + new Date().toString());
out.println("<BR>Hello type: " + ejemplo.getClass().getName());
out.println("Error calling the ejemplorc bean");
out.println(exception.toString());
out.println("</BODY>");
out.println("</HTML>");
return;
}

out.println("<HTML><BODY bgcolor=\"#FFFFFF\">");
out.println("Time stamp: " + new Date().toString());
out.println("<BR>Hello type: " + ejemplo.getClass().getName());
out.println("<BR>Answer: " + answer);
out.println("</BODY>");
out.println("</HTML>");
}

// Displays a trace message to System.out
private void trace(String methodName) {
System.out.print(methodName);
System.out.println("() called");
}

}

Ahora definimos la Web App (web.xml)

<?xml version="1.0"?>
<!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN" "http://java.sun.com/j2ee/dtds/application_1_2.dtd">

<application>

<!-- The display-name element specifies the human-readable name of this
application. It is not used to identify the application. -->

<display-name>ejemplorc</display-name>


<!-- The EJB module. All that needs to be specified is the location of the
EJB JAR file. -->

<module>
<ejb>ejemplorc-ejb.jar</ejb>
</module>


<!-- The web module. The context-root specifies how the web-application can
be reached from a browser. The web-uri element specifies the location
of the WAR file that contains the web application. -->

<module>
<web>
<web-uri>ejemplorc-web.war</web-uri>
<context-root>/ejemplorc</context-root>
</web>
</module>

</application>

Definimos con el Build para Ant (que obviamente debemos tener instalado y la variable ANT_HOME apuntando al directorio de Instalación) (build.xml)

<?xml version="1.0"?>

<!--

Build file for 'ejemplorc', a sample J2EE application which is part of the
Orion Primer. See http://www.jollem.com/orion-primer/ for this Orion tutorial.

Version: $Revision: 4.12 $ $Date: 2001/06/27 10:36:29 $
Author: Ernst de Haan

-->

<project name="ejemplorc" default="ear" basedir=".">


<!-- ================================================================== -->
<!-- Initialization of all property settings -->
<!-- ================================================================== -->

<target name="init">
<property name="name" value="ejemplorc" />
<property name="src.dir" value="src" />
<property name="etc.dir" value="etc" />
<property name="lib.dir" value="lib" />
<property name="build.dir" value="build" />
<property name="orion.dir" value="c:/orion/orion" />
<property name="build.compiler" value="classic" />

<property name="ejb.jar" value="${orion.dir}/ejb.jar" />
<property name="jndi.jar" value="${orion.dir}/jndi.jar" />
<property name="orion.jar" value="${orion.dir}/orion.jar" />

<property name="ejb-classes.dest" value="${lib.dir}/ejb" />
<property name="web-classes.dest" value="${lib.dir}/web/WEB-INF/classes" />

<property name="ejb.classpath" value="${ejb.jar}" />
<property name="web.classpath" value="${ejb-classes.dest}:${ejb.jar}:${jndi.jar}:${orion.jar}" />

<property name="pkg-dist.name" value="${name}-pkg" />

<property name="deploy.ormi" value=""/>
<property name="deploy.username" value=""/>
<property name="deploy.password" value=""/>
</target>


<!-- ================================================================== -->
<!-- Removes all created files and directories -->
<!-- ================================================================== -->

<target name="clean" depends="init">
<delete dir="${lib.dir}" />
<delete dir="${build.dir}" />
</target>


<!-- ================================================================== -->
<!-- Makes sure the needed directory structure is in place -->
<!-- ================================================================== -->

<target name="prepare" depends="init">
<mkdir dir="${lib.dir}" />
<mkdir dir="${lib.dir}/ejb" />
<mkdir dir="${lib.dir}/ejb/META-INF" />
<mkdir dir="${lib.dir}/web" />
<mkdir dir="${lib.dir}/web/WEB-INF" />
<mkdir dir="${lib.dir}/web/WEB-INF/classes" />
<mkdir dir="${lib.dir}/j2ee" />
<mkdir dir="${lib.dir}/META-INF" />
<mkdir dir="${build.dir}" />
</target>


<!-- ================================================================== -->
<!-- Compilation of the EJB part of the application -->
<!-- ================================================================== -->

<target name="ejb-classes" depends="prepare">
<javac srcdir="${src.dir}"
destdir="${ejb-classes.dest}"
includes="java/ejemplorc/ejb/**"
classpath="${ejb.classpath}" />
</target>

<target name="ejb-meta-inf" depends="prepare">
<copy file="${etc.dir}/ejb-jar.xml"
tofile="${lib.dir}/ejb/META-INF/ejb-jar.xml" />
</target>

<target name="ejb-jar" depends="ejb-classes,ejb-meta-inf">
<jar jarfile="${build.dir}/${name}-ejb.jar"
basedir="${lib.dir}/ejb" />
</target>


<!-- ================================================================== -->
<!-- Compilation of the web part of the application -->
<!-- ================================================================== -->

<target name="web-classes" depends="prepare">
<javac srcdir="${src.dir}"
destdir="${lib.dir}/web/WEB-INF/classes"
includes="java/ejemplorc/web/**"
classpath="${web.classpath}" />
</target>

<target name="web-web-inf" depends="prepare">
<copy file="${etc.dir}/web.xml"
tofile="${lib.dir}/web/WEB-INF/web.xml" />
</target>

<target name="war" depends="web-classes,web-web-inf">
<jar jarfile="${build.dir}/${name}-web.war"
basedir="${lib.dir}/web" />
</target>


<!-- ================================================================== -->
<!-- Compilation of the complete J2EE application (both web and EJB) -->
<!-- ================================================================== -->

<target name="j2ee-meta-inf" depends="prepare">
<copy file="${etc.dir}/application.xml"
tofile="${lib.dir}/j2ee/META-INF/application.xml" />
</target>

<target name="ear" depends="ejb-jar,war,j2ee-meta-inf">
<copy file="${build.dir}/${name}-ejb.jar"
tofile="${lib.dir}/j2ee/${name}-ejb.jar" />
<copy file="${build.dir}/${name}-web.war"
tofile="${lib.dir}/j2ee/${name}-web.war" />
<jar jarfile="${build.dir}/${name}.ear"
basedir="${lib.dir}/j2ee" />
</target>


<!-- ================================================================== -->
<!-- Generates a GZip'ed tar source distribution -->
<!-- ================================================================== -->

<target name="pkg-dist" depends="prepare">

<mkdir dir="${build.dir}/${name}" />

<copy todir="${build.dir}/${name}">
<fileset dir="." includes="${src.dir}/java/**" />
<fileset dir="." includes="${etc.dir}/**" />
<fileset dir="." includes="build.xml" />
</copy>

<tar tarfile="${build.dir}/${pkg-dist.name}.tar"
basedir="${build.dir}"
includes="${name}/**" />

<gzip src="${build.dir}/${pkg-dist.name}.tar"
zipfile="${build.dir}/${pkg-dist.name}.tar.gz" />

<delete file="${build.dir}/${pkg-dist.name}.tar" />

<zip zipfile="${build.dir}/${pkg-dist.name}.zip"
basedir="${build.dir}"
includes="${name}/**" />

<delete dir="${build.dir}/${name}" />
</target>


<!-- ================================================================== -->
<!-- Generate as many files as you can! ;-) -->
<!-- ================================================================== -->

<target name="all" depends="ear,pkg-dist" />


<!-- ================================================================== -->
<!-- Deploy the application -->
<!-- ================================================================== -->

<target name="deploy" depends="all">
<java classname="com.evermind.client.orion.OrionConsoleAdmin" fork="yes">
<arg value="${deploy.ormi}" />
<arg value="${deploy.username}" />
<arg value="${deploy.password}" />
<arg value="-deploy" />
<arg value="-file" />
<arg value="${build.dir}/${name}.ear" />
<arg value="-deploymentName" />
<arg value="${name}" />
<classpath>
<pathelement location="${orion.jar}" />
<pathelement location="${ejb.jar}" />
<pathelement location="${jndi.jar}" />
</classpath>
</java>
</target>

</project>

Ir al directorio donde esta el Build.xml y ejecutar Ant.exe
Ahora damos de alta la Web App en (orion/config/default-web-site.xml)

<?xml version="1.0"?>
<!DOCTYPE application-server PUBLIC "Orion Application Server Config" "http://www.orionserver.com/dtds/application-server.dtd">

<application-server
application-directory="../applications"
deployment-directory="../application-deployments"
>
<rmi-config path="./rmi.xml" />
<!-- JMS-server config link, uncomment to activate the JMS service -->
<!-- <jms-config path="./jms.xml" /> -->
<log>
<file path="../log/server.log" />
</log>

<global-application name="default" path="application.xml" />

<global-web-app-config path="global-web-application.xml" />
<web-site path="./default-web-site.xml" />

<!-- Compiler, activate this to specify an alternative compiler such
as jikes for EJB/JSP compiling. -->
<!-- <compiler executable="jikes" classpath="/myjdkdir/jre/lib/rt.jar" /> -->

<application name="ejemplorc" path="C:\orion\ejemplorc\build\ejemplorc.ear" />

</application-server>

 
Nos generará la estructura de ficheros auxiliar y el EAR destino

 

Y decimos en el server.xml donde esta el ear

Y ya podemos comprobar el resultado

 

Orion también dispone de una consola gráfica para administrar sus ficheros de configuración. Te advierte que esta en alpha, aunque a mi no me ha roto nada.

java -jar orion.jar -console

 

 


Sobre el Autor ..


¿Qué te ha parecido el tutorial? Déjanos saber tu opinión y ¡vota!

Muy malo Malo Regular Bueno Muy bueno
 


(Sólo para usuarios registrados)

» Registrate y accede a esta y otras ventajas «

Anímate y coméntanos lo que pienses sobre este tutorial

Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.


(Sólo para usuarios registrados)

» Registrate y accede a esta y otras ventajas «

Autor Mensaje de usuario registrado
Autor Mensaje de usuario anónimo
Christian Daniel Rio Fecha de envío: 2009-05-06 - 06:32:28 PM
Buenos dias soy estudiante de ing. de sistemas, estoy tratando de conectar un ejb de una aplicacion web A con otra aplicacion web B. Toy trabajando con el OAS, mi problema es solo puedo hacerlo si el usuario de configuraciòn de conexion(via rmi) es rol adminitrador. espero un comentario a mi pregunta porsiacaso le pongo el metodo que uso Hashtable env = new Hashtable(); // Standalone OC4J connection details env.put( Context.INITIAL_CONTEXT_FACTORY, "oracle.j2ee.rmi.RMIInitialContextFactory" ); //env.put( Context.SECURITY_PRINCIPAL, "oc4jadmin" );//con este todo perfet env.put( Context.SECURITY_PRINCIPAL, "prueba2" );// env.put( Context.SECURITY_CREDENTIALS, "prueba2" ); env.put(Context.PROVIDER_URL, getInitialContext());//23791//23791
BoR Fecha de envío: 2007-10-01 - 12:42:19 PM
Hola. Desde hace tiempo sigo los tutoriales que publicáis y me parecen excelentes. Enhorabuena. No obstante en éste en particular he encontrado ciertos problemas y no he conseguido reproducirlo: - Me da la impresión de que me falta uno de los descriptores, en particular el application.xml. - Una vez informado el servidor de dónde se encuentra el EAR. Debemos pararlo y arrancarlo de nuevo? Toma los cambios en caliente?. Aprovecho para pediros alguna indicación sobre los distintos tipos de descriptores que necesitamos, o algún enlace a algún tutorial que lo explique. Los necesarios para crear y desplegar EJBs, Servlets, aplicaciones Web o J2EE. Gracias por todo.


Creative Commons License Esta obra está licenciada bajo licencia Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5

Recuerda

Autentia te regala la mayoría del conocimiento aquí compartido (Ver todos los tutoriales). Somos expertos en: J2EE, Struts, JSF, C++, OOP, UML, UP, Patrones de diseño ... y muchas otras cosas.

¿Nos vas a tener en cuenta cuando necesites consultoría o formación en tu empresa?, ¿Vas a ser tan generoso con nosotros como lo tratamos de ser con vosotros?

Somos pocos, somos buenos, estamos motivados y nos gusta lo que hacemos ...

Autentia = Soporte a Desarrollo & Formación.

info@autentia.com

Tutoriales recomendados

Nombre Resumen
Fecha
Visitas Valoración Votos Pdf
Patrón Visitor con commons-collections y sus Closures En este tutorial vamos a ver cómo podemos usar la librería de Apache commons-collections para implementar de forma sencilla un Visitor que se recorra todos los elementos de una colección. 2010-01-14 438 - -
¿Qué son el cloud computing y google app engine? El presente tutorial trata de responder a muchas preguntas centrándose en una nube muy de moda, el Google App Engine 2009-12-17 1645 Muy bueno 5
Apache + Tomcat: Balanceo de carga y alta disponibilidad Este tutorial trata de cómo configurar un conjunto de servidores para que las peticiones de los usuarios a los servicios se distribuyan entre los servidores 2009-12-09 1754 - -
Instalación de Glassfish 2.1 En este tutorial nos veremos cómo instalar el servidor de aplicaciones GlassFish. Además veremos los primeros pasos, como entrar en la consola de administración del servidor, y desplegar una aplicación EAR (Enterprise Application) 2009-11-11 2705 Bueno 1
EJB 3.0 y pruebas unitarias con Maven, JUnit 4 y Apache Open EJB. Continuamos buscando una buena solución para llevar a cabo test de EJBs, ahora con OpenEJB. 2009-09-23 2434 - -
EJB 3.0 y pruebas de persistencia con Maven, JUnit 4 y Embedded JBoss sobre Java 6. Damos continuidad al tutorial EJB 3.0 y pruebas unitarias con Maven, JUnit 4 y Embedded JBoss Java 6, probando el llevar a cabo un test de persistencia de un EJB de entidad, bajo soporte de EJB de servicio que implementa el patrón dao, en el mismo entorno 2009-09-14 2692 Muy bueno 2
Instalación de Liferay en Tomcat existente En este tutorial vamos a solventar el problema de instalar Liferay cuando ya contamos con un Tomcat existente y necesitamos que Liferay conviva con el resto de aplicaciones que corren en el servidor. 2009-09-12 2933 Bueno 4
Joomla 1.5. Instalación y configuración Veamos en detalle cómo instalar Joomla 1.5 y aplicar algunas configuraciones posteriores de las disponibles en este CMS 2009-08-14 9256 - -
Instalación de VirtualBox PUEL En este tutorial os enseñamos a instalar VirtualBox como alternativa a VMWare para la virtualización de sistemas operativos. 2009-08-03 4118 Muy bueno 2
Migración de EJB3 a JPA y Spring. Este tutorial de como emigrar una aplicación montada con EJB3 y JSF al soporte que proporciona Hibernate para JPA y a Spring, con el mismo soporte de JSF. 2009-07-24 3475 Muy bueno 1

Nota:

Los tutoriales mostrados en este Web tienen como objetivo la difusión del conocimiento. Los contenidos y comentarios de los tutoriales son responsabilidad de sus respectivos autores. En algún caso se puede hacer referencia a marcas o nombres cuya propiedad y derechos es de sus respectivos dueños. Si algún afectado desea que incorporemos alguna reseña específica, no tiene más que solicitarlo. Si alguien encuentra algún problema con la información publicada en este Web, rogamos que informe al administrador rcanales@adictosaltrabajo.com para su resolución.