Showing posts with label EJB 3.0/TopLink. Show all posts
Showing posts with label EJB 3.0/TopLink. Show all posts

Monday, June 13, 2016

Oracle® Weblogic 12.2.1: How to implement a custom UUID in for Toplink EJB 3.0

To implement a custom sequence strategy you can subclass org.eclipse.persistence.sequencing.Sequenceor StandardSequence 

StandardSequence assumes a numeric value being used so Sequence will be used for this example to return a random UUID value.

Implementation of UUIDSequence
                                                             
package com.mindtelligent.worklist.model;


import java.util.UUID;
import java.util.Vector;

import org.eclipse.persistence.config.SessionCustomizer;
import org.eclipse.persistence.internal.databaseaccess.Accessor;
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.sequencing.Sequence;
import org.eclipse.persistence.sessions.Session;

public class UUIDSequence extends Sequence implements SessionCustomizer {

public UUIDSequence() {
super();
}

public UUIDSequence(String name) {
super(name);
}

@Override
public Object getGeneratedValue(Accessor accessor,
AbstractSession writeSession, String seqName) {
return UUID.randomUUID().toString().toUpperCase();
}

@Override
public Vector getGeneratedVector(Accessor accessor,
AbstractSession writeSession, String seqName, int size) {
return null;
}

@Override
public void onConnect() {
}

@Override
public void onDisconnect() {
}

@Override
public boolean shouldAcquireValueAfterInsert() {
return false;
}

 

@Override
public boolean shouldUseTransaction() {
return false;
}

@Override
public boolean shouldUsePreallocation() {
return false;
}

public void customize(Session session) throws Exception {
UUIDSequence sequence = new UUIDSequence("system-uuid");

session.getLogin().addSequence(sequence);
}

}

                                                             

Registering Sequence


Add a property to persistence.xml

 <property name="eclipselink.session.customizer" value="com.mindtelligent.worklist.model.UUIDSequence"/> 

 

                                                             

Change the EJB 3.0 Class 



@Id
@GeneratedValue(generator="system-uuid")    
@Column(name="ADDRESS_ID", nullable = false, length = 50)


Where ADDRESS_ID is the Primary Key of the table

Tuesday, April 19, 2016

Oracle® Fusion Middleware Weblogic 10.3.6: JPA client error

In a recent IoT project, MindTelligent team ran into an issue with connecting the JPA (Session Facade Client) with Session Beans when deployed on Weblogic 10.3.6 JDK 1.7 and client running on JDeveloper 11.1.1.7.

Following exception is thrown

java.io.InvalidClassException: org.eclipse.persistence.exceptions.ValidationException; local class incompatible: stream classdesc serialVersionUID = 8323218586942907354, local class serialVersionUID = 7573113798854854020
java.io.InvalidClassException: org.eclipse.persistence.exceptions.ValidationException; local class incompatible: stream classdesc serialVersionUID = 8323218586942907354, local class serialVersionUID = 7573113798854854020
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:562)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1315)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at weblogic.rjvm.ClassTableEntry.readExternal(ClassTableEntry.java:36)
at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1791)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)


Issue:
The version of the Class org.eclipse.persistence.exceptions.ValidationException is different in JDeveloper and Weblogic instance on which the EJB 3.0 are running.

Solution:

FTP the  org.eclipse.persistence_1.2.0.0_2-3.jar from the Weblogic Instance where the deployed beans are running and include it in the CLASSPATH of the client as shown below. This should resolve the issue




How IdP Groups Are Tied to Databricks Groups (Unity Catalog)

  🔗 How IdP Groups Are Tied to Databricks Groups (Unity Catalog) 🔑 Key Principle (Read This First) Databricks does NOT “map” IdP groups...