Monday, October 17, 2011

Android Development

Android Development

The purpose of this article is to provide minimal quickstart instructions on moving to native thick-client Android development from the perspective of traditional Oracle/SUN Java EE 6 enterprise application development.  We will also discuss how to adjust Java EE 6 applications to be able to run on the Chrome based browser in the Android browser as thin-client front ends.

Development Environment:

1) Download the Eclipse.org Eclipse IDE - use the latest EE 3.7.1 version
http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/indigosr1
2) Download the Android SDK from http://developer.android.com/index.html
- select installer_r16-windows.exe and run it to get the extended libraries online
- leave "Start SDK Manager" selected to download all versions of the Android API
- verify that your proxy is set if you are behind a firewall - and use http substitution for https


3) Update Eclipse with the ADT by adding the following site to Help | Install new software
4) Update Eclipse to point to the Android SDK

5) Load an example project using the new project wizard in Eclipse
6) Run as Android Application to either bring up the Android simulator or deploy to an Android device  or AVD - if one is connected
6b) create a new Android Virtual Device

Get a Google Play merchant account at https://play.google.com/apps/publish/v2/signup/?pli=1

References:
Android Developer Site : http://developer.android.com/index.html

Monday, May 16, 2011

Using the Eclipse IDE

Running multiple workspaces or multiple instances of Eclipse:
You will find the need to identify your workspace - place the -showlocation option before any -product or org.eclipse.platform option.  Here is an example modified eclipse.ini file for a 32 bit Java EE install of Eclipse 3.6.

-startup
plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.2.R36x_v20101222
-showsplash
-showlocation
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
org.eclipse.platform
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-clean
-XX:MaxPermSize=256m
-Xms1024m
-Xmx1024m
-XX:+UseParallelGC
-XX:PermSize=256M

Tuesday, May 3, 2011

EclipseLink JPA and Sybase

Q) How do we integrate EclipseLink with Sybase?

Lets start with the persistence unit configuration for a simple Java SE application managed example.
We require access to the JConnect 5.5 JDBC driver jar or Sybase Adaptive Server Enterprise JDBC driver - usually your /sybase/jConnect-6_0/classes/jconn3.jar



  
    org.eclipse.persistence.jpa.PersistenceProvider
    com.oacis.example.jpa.model.BugNumber
    
       
       
      
      
      
       
      
      
      
      

      
      
      
      
       
    
  



Minimal Source - No Transaction code (only a query at thes point) no MVC separation via Locator, ApplicationContext or any EE container managed @Session or @PersistenceContext annotions.

Note: for a complete Java EE 6 distributed application example involving JPA refer to my tutorial page at EclipseLink

public class SEClient {

    // Application managed EMF and EM
    private EntityManagerFactory emf  = null;
    private EntityManager entityManager = null;
    // Reference the database specific persistence unit in persistence.xml
    public static final String PU_NAME_CREATE = "sybase_remote";    
    private List@lt;bugnumber@gt; bugs;
    
    private void initialize(String puName) {
        Metamodel metamodel = null;
        try {
            // Initialize an application managed JPA emf and em via META-INF
            emf  = Persistence.createEntityManagerFactory(puName);
            System.out.println("Metamodel: " + emf.getMetamodel());            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void finalize() {
        // close JPA
        try {
            if(null != entityManager) {
                entityManager.close();
                emf.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public void connect() {
        // JPA 1.0
        Query query = getEntityManager().createQuery("select object(c) from BugNumber c");
        try {
            bugs = query.getResultList();
        } catch (NoResultException nre) {
            System.out.println("_collatz: " + System.currentTimeMillis() + ": server was redeployed mid-session: computeGrid is null");
            
        }
    }
    
 public static void main(String[] args) {
  SEClient client = new SEClient();
  client.initialize(PU_NAME_CREATE);
  client.connect();
 }

    public EntityManagerFactory getEmf() {  return emf; }
 public void setEmf(EntityManagerFactory emf) {  this.emf = emf; }
 
 public EntityManager getEntityManager() {
        if(null == entityManager) {
            entityManager = emf.createEntityManager();
        }
        return entityManager;
 }
 
 public void setEntityManager(EntityManager entityManager) {  this.entityManager = entityManager; } 
}


@Entity
@Table(name="JPA_BUGNUMBER")
public class BugNumber implements Serializable {
    private static final long serialVersionUID = 3132063814489287035L;

    @Id
    // keep the sequence column name under 30 chars to avoid an ORA-00972   
    @SequenceGenerator(name="JPA_SEQUENCE_BUGN", sequenceName="JPA_BUGN_SEQ", allocationSize=15)
    @GeneratedValue(generator="JPA_SEQUENCE_BUGN")
    @Column(name="BUG_ID")    
    private Long id;

    @Version
    @Column(name="BUG_VERSION")
    private int version;
    
    @Basic
    private long number;
    private int priority;
    private boolean assignedStatus;
    private String assignedTo;
    
    public BugNumber() {            }
    
    public BugNumber(String aNumber) {
        number = Integer.parseInt(aNumber);
    }
    
    public char[] getCharDigits() {
        return Long.toString(number).toCharArray();
    }
    
    public List getIntDigits() {
        List digits = new ArrayList();
        for(Character aChar : getCharDigits()) {
            digits.add(new Integer(Character.getNumericValue(aChar.charValue())));            
        }
        return digits;
    }
    
    public int getLastDigit() {
        List numbers = getIntDigits();        
        return numbers.get(numbers.size() - 1);
    }
    
    public long getNumber() {        return number;    }
    public void setNumber(long number) {        this.number = number;    }
    public int getPriority() {        return priority;    }
    public void setPriority(int priority) {        this.priority = priority;    }
    public boolean isAssignedStatus() {        return assignedStatus;    }
    public void setAssignedStatus(boolean assignedStatus) {        this.assignedStatus = assignedStatus;    }
    public String getAssignedTo() {        return assignedTo;    }
    public void setAssignedTo(String assignedTo) {        this.assignedTo = assignedTo;    }
    public Long getId() {        return id;    }
    public void setId(Long id) {        this.id = id;    }
    public int getVersion() {        return version;    }
    public void setVersion(int version) {        this.version = version;    }
    
}


Console Log output:
EL Finest]: 2011-05-03 09:46:19.777--ServerSession(27379847)--Thread(Thread[main,5,main])--Begin predeploying Persistence Unit sybase_remote; session file:/D:/wse/view_w36b/com.corp.example.jpa.SEClient/bin/_sybase_remote; state Initial; factoryCount 0
[EL Finest]: 2011-05-03 09:46:19.792--ServerSession(27379847)--Thread(Thread[main,5,main])--property=eclipselink.orm.throw.exceptions; default value=true
[EL Finest]: 2011-05-03 09:46:19.824--ServerSession(27379847)--Thread(Thread[main,5,main])--property=eclipselink.jpa.uppercase-column-names; default value=false
[EL Finer]: 2011-05-03 09:46:19.824--ServerSession(27379847)--Thread(Thread[main,5,main])--Searching for default mapping file in file:/D:/wse/view_w36b/com.corp.example.jpa.SEClient/bin/
[EL Finer]: 2011-05-03 09:46:19.839--ServerSession(27379847)--Thread(Thread[main,5,main])--Searching for default mapping file in file:/D:/wse/view_w36b/com.corp.example.jpa.SEClient/bin/
[EL Config]: 2011-05-03 09:46:19.964--ServerSession(27379847)--Thread(Thread[main,5,main])--The access type for the persistent class [class com.corp.example.jpa.model.BugNumber] is set to [FIELD].
[EL Config]: 2011-05-03 09:46:19.996--ServerSession(27379847)--Thread(Thread[main,5,main])--The alias name for the entity class [class com.corp.example.jpa.model.BugNumber] is being defaulted to: BugNumber.
[EL Config]: 2011-05-03 09:46:20.011--ServerSession(27379847)--Thread(Thread[main,5,main])--The column name for element [field assignedStatus] is being defaulted to: ASSIGNEDSTATUS.
[EL Config]: 2011-05-03 09:46:20.011--ServerSession(27379847)--Thread(Thread[main,5,main])--The column name for element [field priority] is being defaulted to: PRIORITY.
[EL Config]: 2011-05-03 09:46:20.011--ServerSession(27379847)--Thread(Thread[main,5,main])--The column name for element [field assignedTo] is being defaulted to: ASSIGNEDTO.
[EL Config]: 2011-05-03 09:46:20.011--ServerSession(27379847)--Thread(Thread[main,5,main])--The column name for element [field number] is being defaulted to: NUMBER.
[EL Finest]: 2011-05-03 09:46:20.011--ServerSession(27379847)--Thread(Thread[main,5,main])--End predeploying Persistence Unit sybase_remote; session file:/D:/wse/view_w36b/com.corp.example.jpa.SEClient/bin/_sybase_remote; state Predeployed; factoryCount 0
[EL Finer]: 2011-05-03 09:46:20.011--Thread(Thread[main,5,main])--JavaSECMPInitializer - transformer is null.
[EL Finest]: 2011-05-03 09:46:20.011--ServerSession(27379847)--Thread(Thread[main,5,main])--Begin predeploying Persistence Unit sybase_remote; session file:/D:/wse/view_w36b/com.corp.example.jpa.SEClient/bin/_sybase_remote; state Predeployed; factoryCount 0
[EL Finest]: 2011-05-03 09:46:20.011--ServerSession(27379847)--Thread(Thread[main,5,main])--End predeploying Persistence Unit sybase_remote; session file:/D:/wse/view_w36b/com.corp.example.jpa.SEClient/bin/_sybase_remote; state Predeployed; factoryCount 1
[EL Finest]: 2011-05-03 09:46:20.027--ServerSession(27379847)--Thread(Thread[main,5,main])--Begin deploying Persistence Unit sybase_remote; session file:/D:/wse/view_w36b/com.corp.example.jpa.SEClient/bin/_sybase_remote; state Predeployed; factoryCount 1
[EL Finer]: 2011-05-03 09:46:20.042--ServerSession(27379847)--Thread(Thread[main,5,main])--Could not initialize Validation Factory. Encountered following exception: javax.validation.ValidationException: Unable to find a default provider
[EL Finest]: 2011-05-03 09:46:20.042--ServerSession(27379847)--Thread(Thread[main,5,main])--property=eclipselink.logging.level; value=ALL; translated value=ALL
[EL Finest]: 2011-05-03 09:46:20.042--ServerSession(27379847)--Thread(Thread[main,5,main])--property=eclipselink.logging.level; value=ALL; translated value=ALL
[EL Finest]: 2011-05-03 09:46:20.042--ServerSession(27379847)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.user; value=dblfwk
[EL Finest]: 2011-05-03 09:46:20.042--ServerSession(27379847)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.password; value=xxxxxx
[EL Finest]: 2011-05-03 09:46:20.292--ServerSession(27379847)--Thread(Thread[main,5,main])--property=eclipselink.target-database; value=Sybase; translated value=org.eclipse.persistence.platform.database.SybasePlatform
[EL Finest]: 2011-05-03 09:46:20.292--ServerSession(27379847)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.driver; value=com.sybase.jdbc3.jdbc.SybDriver
[EL Finest]: 2011-05-03 09:46:20.292--ServerSession(27379847)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.url; value=jdbc:sybase:Tds:server:5000
[EL Info]: 2011-05-03 09:46:20.308--ServerSession(27379847)--Thread(Thread[main,5,main])--EclipseLink, version: Eclipse Persistence Services - 2.1
[EL Config]: 2011-05-03 09:46:20.308--ServerSession(27379847)--Connection(13366030)--Thread(Thread[main,5,main])--connecting(DatabaseLogin(
 platform=>SybasePlatform
 user name=> "user"
 datasource URL=> "jdbc:sybase:Tds:server:5000"
))
[EL Config]: 2011-05-03 09:46:20.433--ServerSession(27379847)--Connection(29194312)--Thread(Thread[main,5,main])--Connected: jdbc:sybase:Tds:server:5000
 User: user
 Database: Adaptive Server Enterprise  Version: Adaptive Server Enterprise/15.x/*/Fri *
 Driver: jConnect (TM) for JDBC (TM)  Version: jConnect (TM) for JDBC(TM)/6.0x* 2010
[EL Finest]: 2011-05-03 09:46:20.433--ServerSession(27379847)--Connection(29194312)--Thread(Thread[main,5,main])--Connection acquired from connection pool [default].
[EL Finest]: 2011-05-03 09:46:20.433--ServerSession(27379847)--Connection(29194312)--Thread(Thread[main,5,main])--Connection released to connection pool [default].
[EL Finest]: 2011-05-03 09:46:20.449--ServerSession(27379847)--Thread(Thread[main,5,main])--sequencing connected, state is NoPreallocation_State
[EL Finest]: 2011-05-03 09:46:20.449--ServerSession(27379847)--Thread(Thread[main,5,main])--sequence JPA_BUGN_SEQ: preallocation size 15
[EL Info]: 2011-05-03 09:46:20.48--ServerSession(27379847)--Thread(Thread[main,5,main])--file:/D:/wse/view_w36b/com.o.example.jpa.SEClient/bin/_sybase_remote login successful
[EL Finest]: 2011-05-03 09:46:20.761--ServerSession(27379847)--Thread(Thread[main,5,main])--Execute query DataModifyQuery(sql="DROP TABLE JPA_BUGNUMBER")
[EL Finest]: 2011-05-03 09:46:20.761--ServerSession(27379847)--Connection(29194312)--Thread(Thread[main,5,main])--Connection acquired from connection pool [default].
[EL Fine]: 2011-05-03 09:46:20.761--ServerSession(27379847)--Connection(29194312)--Thread(Thread[main,5,main])--DROP TABLE JPA_BUGNUMBER
[EL Fine]: 2011-05-03 09:46:20.824--ServerSession(27379847)--Thread(Thread[main,5,main])--SELECT 1
[EL Finest]: 2011-05-03 09:46:20.824--ServerSession(27379847)--Connection(29194312)--Thread(Thread[main,5,main])--Connection released to connection pool [default].
[EL Warning]: 2011-05-03 09:46:20.824--ServerSession(27379847)--Thread(Thread[main,5,main])--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.1: org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.sybase.jdbc3.jdbc.SybSQLException: Cannot drop the table 'JPA_BUGNUMBER', because it doesn't exist in the system catalogs.

Error Code: 3701
Call: DROP TABLE JPA_BUGNUMBER
Query: DataModifyQuery(sql="DROP TABLE JPA_BUGNUMBER")
[EL Finest]: 2011-05-03 09:46:20.824--ServerSession(27379847)--Thread(Thread[main,5,main])--Execute query DataModifyQuery(sql="CREATE TABLE JPA_BUGNUMBER (BUG_ID NUMERIC(19) IDENTITY NOT NULL, ASSIGNEDSTATUS BIT default 0 NOT NULL, ASSIGNEDTO VARCHAR(255) NULL, NUMBER NUMERIC(19) NULL, PRIORITY INTEGER NULL, BUG_VERSION INTEGER NULL, PRIMARY KEY (BUG_ID))")
[EL Finest]: 2011-05-03 09:46:20.824--ServerSession(27379847)--Connection(29194312)--Thread(Thread[main,5,main])--Connection acquired from connection pool [default].
[EL Fine]: 2011-05-03 09:46:20.839--ServerSession(27379847)--Connection(29194312)--Thread(Thread[main,5,main])--CREATE TABLE JPA_BUGNUMBER (BUG_ID NUMERIC(19) IDENTITY NOT NULL, ASSIGNEDSTATUS BIT default 0 NOT NULL, ASSIGNEDTO VARCHAR(255) NULL, NUMBER NUMERIC(19) NULL, PRIORITY INTEGER NULL, BUG_VERSION INTEGER NULL, PRIMARY KEY (BUG_ID))
[EL Finest]: 2011-05-03 09:46:20.933--ServerSession(27379847)--Connection(29194312)--Thread(Thread[main,5,main])--Connection released to connection pool [default].
[EL Finer]: 2011-05-03 09:46:20.949--ServerSession(27379847)--Thread(Thread[main,5,main])--Canonical Metamodel class [com.corp.example.jpa.model.BugNumber_] not found during initialization.
[EL Finest]: 2011-05-03 09:46:20.949--ServerSession(27379847)--Thread(Thread[main,5,main])--End deploying Persistence Unit sybase_remote; session file:/D:/wse/view_w36b/com.corp.example.jpa.SEClient/bin/_sybase_remote; state Deployed; factoryCount 1
Metamodel: MetamodelImpl@31706449 [ 6 Types: , 1 ManagedTypes: , 1 EntityTypes: , 0 MappedSuperclassTypes: , 0 EmbeddableTypes: ]
[EL Finer]: 2011-05-03 09:46:21.136--ServerSession(27379847)--Thread(Thread[main,5,main])--client acquired: 3916915
[EL Finer]: 2011-05-03 09:46:21.152--ClientSession(3916915)--Thread(Thread[main,5,main])--acquire unit of work: 19647819
[EL Finest]: 2011-05-03 09:46:21.152--UnitOfWork(19647819)--Thread(Thread[main,5,main])--Execute query ReadAllQuery(referenceClass=BugNumber sql="SELECT BUG_ID, ASSIGNEDSTATUS, ASSIGNEDTO, NUMBER, PRIORITY, BUG_VERSION FROM JPA_BUGNUMBER")
[EL Finest]: 2011-05-03 09:46:21.152--ServerSession(27379847)--Connection(29194312)--Thread(Thread[main,5,main])--Connection acquired from connection pool [default].
[EL Fine]: 2011-05-03 09:46:21.152--ServerSession(27379847)--Connection(29194312)--Thread(Thread[main,5,main])--SELECT BUG_ID, ASSIGNEDSTATUS, ASSIGNEDTO, NUMBER, PRIORITY, BUG_VERSION FROM JPA_BUGNUMBER
[EL Finest]: 2011-05-03 09:46:21.152--ServerSession(27379847)--Connection(29194312)--Thread(Thread[main,5,main])--Connection released to connection pool [default].

Thursday, March 3, 2011

Object Relational Mapping

 
    A question by C. J. Date in point #1 on page 81 chapter 5 "Relational Algebra" of the 2005 book : "Database In Depth - Relational Theory for Practitioners" has caught my attention. I quote:

"First, the operators are generic; they apply, in effect, to all possible relations. For example, we don't need one specific join operator to join employees and departments and another, different join operator to join suppliers and shipments. (Incidentally, do you think ano analogous observation applies to object-oriented systems?)" 

I would like to comment on this shortly

Saturday, February 5, 2011

JEE6 Tutorial for a Distributed Enterprise Application incorporating EJB 3.1, JPA 2.0, JSF 2.0, Servlet 3.0 and JAX-RS on Oracle GlassFish Server 3.1

20110209: This tutorial has widened in scope and is being developed at the following URL.
http://wiki.eclipse.org/EclipseLink/Examples/Distributed

    This tutorial describes the analysis, design, implementation and deployment of a distributed JEE6 application that makes use of the EJB 3.1, JPA 2.0, JSF 2.0, Servlet 3.0 and JAX-RS API implemented as part of the Oracle GlassFish Server 3.1 distribution.  The Java IDE used for this tutorial is the tightly integrated SUN NetBeans 7.0 release that will be in beta until April 2011.

Technology Summary:
    Normally we do not decide on what APIs will be in use before we analyse the requirements.  However, here is the list of technologies we are using - as we finalize the implementation.

Problem:
    The Collatz conjecture or (3n + 1) problem is currently not proved.  There have been attempts at verifying collatz up to 2^61 - however, massive amounts of scalar processing power is required to do this because the problem is non-linear and therefore must be brute force simulated even with optimizations.

    The algorithm is as follows for the set of positive integers to infinity.
  • odd numbers are transformed by 3n + 1
  • even numbers are divided by 2
    If you think in base 2, we see that for odd numbers we shift bits to the left, add the number to the result and set bit 0.   For even numbers we shift bits to the right.  We therefore have a simplified algorithm as follows.
  • odd: next binary = number << 1 + number + 1
  • even: next binary = number >> 1

    Observation 1: the maximum value remains at or around 2x the number of bits in the start number - at least so far in my own simulations up to 640 billion. 

    We stop iteration and record the max path and max value when the sequence enters the 4-2-1 loop after the first 1 is reached.  This sequence must be simulated for all positive integers up to the limit of the software being used.  Fortunately, in Java (and .NET3) we can use BigInteger which supports unlimited length integers - as we would quickly overflow using a 64 bit long as soon as we started iterating numbers over 32 bits.

    Observation 2: I have determined - via a week of simulation distributed among 16 different machines in parallel  - that we will need native computation. 

Requirements:

Analysis:

Use Cases:

Design:

Data Model:
    The following UML class diagram details the data model for the business objects.  We will be using JPA entities and mappedsuperclass artifacts.
Figure 1-1: UML Class Diagram - Data Model


Implementation:

Deployment:

References:


/ Michael O'Brien 20110205

Wednesday, February 2, 2011

JSF 2.0 on JEE6 GlassFish 3.1 (PrimeFaces) and JEE6 WebLogic 12c

Oracle WebLogic Server 12c is an excellent full featured Java EE 6 compliant application server suitable for development and production.  In this tutorial I will details how to get a Java EE application running on WebLogic 12c using JSF 2.0, JPA 2.0 (using the EclipseLink 2.5 provider) on top of any database like Derby 10.8.

Install OEPE for WebLogic 12c
Deploy JSF shared library
Create EAR, EJB, Model and Web Eclipse projects


Configuration:
Add JSF facet and capabilities


add to weblogic.xml
    <wls:library-ref>
        <wls:library-name>jsf</wls:library-name>
        <wls:specification-version>2.0</wls:specification-version>
        <wls:exact-match>true</wls:exact-match>
    </wls:library-ref>


Upgraded the default EclipseLink 2.3.2 provider to the latest EclipseLink 2.5 to take advantage of the new features in 2.5 that don't require container changes - like JPA-RS in http://wiki.eclipse.org/EclipseLink/Development/2.4.0/JPA-RS/REST-API.


change from EclipseLink 2.3.2
[EL Info]: 2013-04-07 18:59:12.282--ServerSession(14413904)--Thread(Thread[[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads])--EclipseLink, version: Eclipse Persistence Services - 2.3.2.v20111125-r10461

by modifying the library jar in the modules directory.
in your $Weblogic\wls12110\modules dir
ignore org.eclipse.persistence_2.0.0.0_2-3.jar
but overwrite
javax.persistence_2.0.0.0_2-0.jar
with
eclipselink.jar
from
http://www.eclipse.org/eclipselink/downloads/milestones.php

After restarting Eclipse OEPE and Weblogic 12c we see the latest version of EclipseLink

[EL Info]: 2013-04-07 19:09:23.109--ServerSession(18669924)--Thread(Thread[[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads])--EclipseLink, version: Eclipse Persistence Services - 2.5.0.v20130403-740364a
[EL Info]: 2013-04-07 19:09:23.109--ServerSession(18669924)--Thread(Thread[[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads])--Server: 12.1.1.0


Enabling JSF 2.0 on WebLogic 10.3.5.0

<14-Jan-2014 3:25:43 o'clock PM EST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
14-Jan-2014 3:26:04 PM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Initializing Sun's JavaServer Faces implementation (1.2_03-b04-FCS) for context '/console'
14-Jan-2014 3:26:05 PM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Completed initializing Sun's JavaServer Faces implementation (1.2_03-b04-FCS) for context '/console'

after deploying a JSF 2.0 war
14-Jan-2014 3:40:12 PM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Initializing Mojarra 2.0.4 (FCS b05) for context '/WeblogicWeb'
<14-Jan-2014 3:40:14 o'clock PM EST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
14-Jan-2014 3:40:15 PM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Initializing Mojarra 2.0.4 (FCS b05) for context '/console'
14-Jan-2014 3:40:15 PM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Completed initializing Mojarra (2.0.4 (FCS b05)) for context '/console'

Upgrading a WebLogic 10.3.5 cluster to 12.1.2 - WebLogic 12c

This section details issues surrounding an upgrade of WebLogic 10.3.5 past 10.3.6 and 12.1.1 to 12.1.2.

References

http://docs.oracle.com/middleware/1212/wls/WLDCW/intro.htm
http://docs.oracle.com/middleware/1212/wls/WLSRN/issues.htm#BCFHBHDD
http://docs.oracle.com/middleware/1212/wls/WLUPG/compat.htm
http://docs.oracle.com/middleware/1212/wls/WLUPG/upgrade_dom.htm#WLUPG388




Tuesday, February 1, 2011

JEE6 : Java Enterprise Edition 6 changes

JEE6 has been released.  Here are some of the highlights of the new version of the API.


1) JPA (Java Persistence API) 2.0 (JSR-317)
CDI (Contexts and Dependency Injection) (JSR 299)
- including Servlet 3.0 where
- web.xml is optional but still overrides the new annotations like @WebServlet
- new init() method annotations (existing on other components) - @PostConstruct and
- new WebProfile deployment model
2) DI (Dependency Injection) for Java (JSR 330)
3) Bean Validation (JSR 303)
4) JAX-RS (RESTful Web Services) (JSR 311)
5) JSF (Java Server Faces) 2.0 (JSR 314)
6) EJB (Enterprise Java Beans) 3.1 (JSR 318) and EJB Lite




Oracle GlassFish 3.1

Oracle WebLogic 10.3.4.0
- See procedure on enabling container managed JPA 2.0 applications on WebLogic 10.3.4.0
http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/weblogic

Monday, January 31, 2011

TODO

http://174.112.210.9:7201/radar/html5.html

Investigate:
http://biemond.blogspot.com/2010/04/ejb-injection-in-jsf-managed-bean.html
and
http://technology.amis.nl/blog/4260/ejb-dependency-injection-of-session-bean-facade-in-jsf-12-on-weblogic-103-jsf-with-jpa

>both have been deprecated recently.

Since the Oracle WebLogic 10.3.4.0 release on 15 Jan 2011 - EJB injection on a JSF managed bean can be accomplished by pure annotation. For example, here is part of the Collatz Distributed project where we inject a @Stateless session bean into an @ManagedBean JSF 2.0 managed bean. The Stateless session bean is itself dependency injected with a JPA 2.0 @PersistenceContext EntityManager for ORM JTA transactions either via standard Java EE 5 EJB tier JTA container managed transactions or even in the Web container using EJB 3.1 Lite and JTA 1.1 as part of the Web Profile.

@Stateless(mappedName = "ejb/CollatzFacade")
public class CollatzFacade implements CollatzFacadeRemote, CollatzFacadeLocal {

    @PersistenceContext(unitName = "CollatzGF-ejbPU", type=PersistenceContextType.TRANSACTION)
    private EntityManager entityManager;
...
}

@ManagedBean(name="collatzBean")
@SessionScoped
public class MonitorManagedBean {
    @EJB(name="ejb/CollatzFacade")
    private CollatzFacadeLocal collatzFacade;
..
}




Total Pageviews

Followers