[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [jakartaee-platform-dev] R: Should we consider rebasing Enterprise Beans Lite to a mapping/extension on top of CDI?
|
First, this thread wasn’t originally about remote EJBs but about rebasing EJB light (not remote) onto CDI. So that there’s only single container solution and EJBs build on top of it. Then many people expressed that remote EJBs are still useful, which increases the motivation to improve EJB as a whole (light as well as remote) and not conserve it as a legacy API.
As to the discussions whether we should put effort into into improving remote EJB or rather support some other modern options, I think we should pause and think for a while. What do we want Jakarta EE provide?
I think it’s better to cover usecases rather than technology. We should strive to provide a solid solution for remote calls. With both text and binary format. Not think whether we it should be done using Java RMI or REST or Websockets, those thoughts should come later. We should provide solutions for messaging too, for manipulation with standard formats (XML, JSON, maybe YAML or anything that is widely used). We should support patterns that people use widely. Jakarta EE should be easy to use and standardize what people often do.
So I suggest we rethink EJB as a specification for remote calls (remote EJBs or even gRPC or something else) and a specification for business components with transactions, synchronization, etc. (EJB lite as a starting point, but we could add support for distributed patterns like Saga, Actors, etc)
Ondro
Well thing is that it never had been standard and always had been very vendor dependent (for good reasons IMHO).
Don't get me wrong, I'm for EE to provide solutions adapted to today's need but innovation is by design not in EE (risk to fail is too high and therefore adoption would be too low as some child projects proved).
And today there is not a mainstream solution, some will use actors, others the plain old compensation pattern, other will stick to XA until perf become an issue etc...
So all EE can do is to enable these cases without being too much opiniated cause it would fail to cover main cases.
Standardizing is a very hard task and the best choices are often to not do in this area rather than doing wrong - it is how I see it.
Doing wrong makes the spec rejected and the platform bloated, postponing until there is a clear standard and added value doesn't bother anything.
EE can enhance the experience a lot in several area but don't think it is one (as data or nosql are not for ex).
Starting by embracing functional and reactive programming, being message passing friendly etc are area which can easily benefit from some investment.
Trying to normalize the state management in a distributed system is too solution dependent to become a promoted feature and providing interfaces you have to impl everytime is quite pointless so think it is where EE should assume to stop: enable all cases but don't force patterns.
Absolutely agree,
but if in the 90s they managed to standardize it with ejb 1.1 providing a model that allows companies to focus on developing code for business and not to manage lines and lines of code for non-functional requirements(like EJB Remoting CMT mode)),
today with jakarta ee 11 I think it should be the same challenge by providing a standard that in addition to doing what it already does (easy rmi, easy managed transaction, easy security), expands (and does not reduce) with new features,
for example standardizing Ejb transaction model behind by Seata (https://seata.io) for handle transactions implicitly.
Java EE 5 and 6 have embraced the soap standard and all derivatives, ws-transaction, wsdl 1.0/2.0 are now discontinued,
many companies prefer and continue to much prefer using the ejb 3.0 model for backend side communications for their reliability,
portability, easy and efficiency and above all because they are a standard that lasts over time (as is the java language with a classic example of the StringTokenizer class) and are not a trend of the moment.
i think jakarta ee absolutely must ALSO do new and better things, if they did it in the 90's why shouldn't they do it today?
Angelo Rubini
@Angelo: is there any convergence of vendors in these features? Don't think so. Is there a will today to promote XA? Don't think so too, it is documented how to not use it and why avoiding it (mainly scalability).
So really think it is a 1990 debate, sure vendors must be able to keep these features but also think spec should just ignore them as of today, in particular when the promoted goal since javaee 6 is to be able to deprecated EJB and it is actually reached
since currently missing features are no more relevant in today's app IMHO.
As already written by David Blevins (tomitribe) use Jakarta REST or GraphQL, gRPC, zeroC Ice or apache i dubbo for anything a 3rd party would invoke,
but for internal communication you can get some amazing functionality from remote EJBs,
a very good example is the good portability and ease of use of incoming and outgoing ejb transaction and remote function (with binary protocol for best performance).
An alternative solutions like this(but not standard):
Best regards
Angelo Rubini
Think we are already covered with websockets which are a good replacement (likely better today than http2 based protocol which are still highly attacked) and using a binary protocol and light client wrapper you get at least an as good solution
than EJB but more portable by design and proxy friendly.
That said, RMI based solution were often slow due to the classloading involved (so don't think remote ejb are really a pro when based on it) and even HTTP 1/1 did very good progress using pooling (compared to original times) and this also makes almost
all the http binary optim pointless (thinking to ajp which is not really needed today for perf in practise).
So think this can be a more emotional thread than technical.
Technically the only pro would be portability - vendor specific things can always be done and don't need to hit the spec.
gRPC or graphql portability are almost a joke due to the related stacks and choices so think focusing on what is widely used like websockets and preparing http2 maturity is way sufficient at jakarta level.
At abstraction level not sure much can be done cause any infra requirements would bother some vendor or be overkill if not used so probably best to boot a library project than a platform solution IMHO.
Hi All,
it is important to preserve functionality such as ejb remoting.
Many business applications use ejb remoting to communicate in their backends, for best perfomance vs soap/rest protocol.
In the EJB 1.1 Specification, Sun Microsystem in according to OMG integrate RMI over CORBA IIOP(Standard
deFacto and more use in the years 80/90).
Most corba client invoke Ejb method from c++, ada etc by Corba Client.
Why not reproduce same scenario for HTTP2/gRPC herea?
Http2 has more fearture like Corba TCP Connection(Single Connection,Multiplezing, priority).
The good base of RMI-IIOP based to OMG Corba(IDL+IIOP/GIOP Message) have most power.
gRPC promote an rpc over http2(only efficient alternative for REST JSON+HTTP), but there are more work
for developer.
-
generate proto interface(on java there is java interface by OMG IDL ),
-
generate and populate stub code(on Ejb this is gratis with Runtime Stub Generation/Downloading feature).
-
generate and populate skeleton code(on Ejb this is gratis with Runtime Skeleton Generation feature).
-
for a server-to-server communication is a good choice ejb-to-ejb communication, and support distributed transaction managed by conintainer.
-
The EJB CMT Feature (EJB container managed transaction inbound outbound) is power feature.
An interesting project is jakarta-RPC but in this moment is very distance from Remote EJB.
Best regards
Angelo Rubini
Agree it is also used by a lot of Payara customers.
Agreed. The WildFly and EAP implementation of remote EJB is very heavily used.
I also know quite a lot of people using remote EJBs in their backend architecture. It’s a perfectly valid usage.
Reminder to everyone as well, remote EJBs != binary protocol. Implementations can use any protocol they want (REST included).
I know we have a ton of features in OpenEJB's protocol around optionally layering over http, client-side load-balancing, dynamic client/server discovery over UDP or TCP, sending updated lists of available servers to clients as part of routine responses,
robust failover options, security features, observable events for all internal activity, metrics built into the protocol that allow for end-to-end awareness of serialization time vs invocation time vs network time.
Definitely I’d use Jakarta REST for anything a 3rd party would invoke, but for internal communication you can get some amazing features out of remote EJBs.
--
David Blevins
Well put.
💯
Hi,
I’d just like to chime in as a long-time Java EE / Jakarta EE user. Our organization has a large, critical application that has used remote EJBs for many years, even
as we changed implementations (WebLogic, JBoss). I agree with the ease-of-use of remote EJBs, particularly for internal applications where we control the client and server, and have had similar thoughts about the future of Jakarta EE and EJB. We could move
these services to HTTP REST on top of JAX-RS. But the simplicity of declaring a Java interface of methods and programming the client and server directly to it has been fairly productive for our developers, and would be missed if we used REST as the replacement.
I’ve been wondering whether there would be a successor to remote EJB functionality, since it’s been said that remoting is not a goal of CDI.
Thanks,
Jim Doyle
From: jakartaee-platform-dev <jakartaee-platform-dev-bounces@xxxxxxxxxxx> On
Behalf Of lenny--- via jakartaee-platform-dev
Sent: Friday, July 21, 2023 11:42 PM
Subject: Re: [jakartaee-platform-dev] Should we consider rebasing Enterprise Beans Lite to a mapping/extension on top of CDI?
What I am specifically talking about is RPC as implemented by Remote EJB part of the spec.
I remember those days very fondly where you can just call remote methods with two annotations, and it actually worked and was easy!
Java EE includes a XMLRPC before SOAP, personally I do not think RPC should be back again.
---
Regards,
Hantsy Bai
Self-employed consultant, fullstack developer, agile coach, freelancer/remote worker
Doesnt RPC means nothing? Some will say GraphQL (others will hate it), some will say gRPC (same), others will say JSON-RPC, others will just bring back SOAP to life.
RPC is likely a synonym to "single endpoint for multiple handlers" but without a format (JSON in EE for ex to stay consistent) and a transport it is undefined and hard to integrate (as were remote EJB between services when not the same vendor and version).
So on EE side the one making the most sense is likely JSON-RPC since it will enable to be interoperable and optimized but guess it can start a lot of debates we should maybe avoid to work on a stronger and lighter platform instead?
Yes, Payara has EJB over HTTP and gRPC currently, but that’s proprietary.
I think there should be some kind of RPC plan post-EJB on the spec level.
Just out of curiosity, is EJB-deprecation-in-favor-of-CDI going to contain RPC of some kind?
EJB Lite would not, as Remote Beans are only in EJB Full. EJB Full is way too complex I think to ever rebase on CDI without making it a totally different spec.
Listening to the industry “weak signals” it sounds like RPC is coming back into fashion.
Would hate to miss that hype, especially that remote EJB-type RPC already exists and well-understood and tested…
Bring back remote EJBs? in CDI form?
I did something in Payara that approximated this. There were plans to take that even further, but you know how these things go.
_______________________________________________
jakartaee-platform-dev
mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To
unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev
_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev
_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev
--
Brian Stansberry
Principal Architect, Red Hat JBoss EAP
He/Him/His
_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev
_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev