[wildfly-dev] WFLY-508, JBeret initial review and integration issues
Andrig Miller
anmiller at redhat.com
Wed Jul 24 13:42:18 EDT 2013
----- Original Message -----
> From: "Cheng Fang" <cfang at redhat.com>
> To: wildfly-dev at lists.jboss.org, "Kevin Conner" <kconner at redhat.com>, "Pete Muir" <pmuir at redhat.com>
> Sent: Wednesday, July 24, 2013 11:05:36 AM
> Subject: Re: [wildfly-dev] WFLY-508, JBeret initial review and integration issues
>
> David,
>
> Thanks for sharing your comments and observations. More inline...
> On 7/24/13 12:09 PM, David M. Lloyd wrote:
> > On initial review of JBeret we have noticed a number of issues that
> > need to be addressed. The culmination amounts to a series of
> > questions and observations here:
> >
> > #1) Why did we not choose to just use the RI? In other words, what
> > benefit do we get from JBeret that is not also in the RI? In
> > other,
> > other words, why should we *use* this code instead of the RI at
> > this
> > point in time?
> Batch RI (http://java.net/projects/jbatch from IBM) was created
> solely
> for the purpose of a reference implementation, and is a subset of
> IBM's
> batch offering. The RI code base is refreshed periodically by IBM
> contributors and it doesn't seem to open to community contribution.
> I
> haven't done a deep technical comparison between the 2 yet, but I
> guess
> there are areas that one is better than the other and vise versa.
> Looking a bit longer term, batch has been an area Java EE and JBoss
> haven't paid much attention to, and I believe is an area that can
> offer
> future growth potential. Having our own impl would give us more
> flexibility when it comes to integration with the rest of the stack,
> design choices, and community building. I'm also adding Kev and Pete
> for their perspectives.
> >
> > #2) Why does JBeret duplicate facilities already present in the
> > WildFly code base and deployer chain - e.g. annotation indexing,
> > reflection indexing, thread management, parsing facilities, etc.?
> Batch spec require an impl to be run in either Java EE or Java SE
> environment. So inevitably certain services have to reside in JBeret
> itself to satisfy the SE runtime. Since we started the impl as a
> standalone first, there may be certain aspects that do not fit nicely
> in
> WildFly. It is in the plan to better align with the appserver by
> leveraging existing services when running inside WildFly. For
> example,
> use the concurrency utils in EE.
>
> >
> > #3) Specific to algorithmic complexity - it appears that jobs are
> > keyed by ID, yet accessed using a sequential search [1] - this does
> > not scale well to large numbers of jobs. Is there no better
> > approach?
> The expectation is there is large amount of data, but the number of
> jobs
> are not that large. Say we run a reporting job every day, it is
> still
> one single job with many JobInstance and JobExecution. So I think
> the
> sequential access is acceptable. I guess another reason I didn't
> want
> to maintain a mapping is I really don't want to duplicate the job id
> as
> the key.
>
I think the assumption that there will be a small number of jobs, with a large amount of data is a bad one. I did large scale batch applications when I worked at Sprint, and the number of jobs was very large indeed. Many thousands, in fact. I Java EE batch is going to be anything more than a toy, then this is fine, but if customers try to adopt this under this current design, I think they will quickly give up on it.
Andy
> >
> > #4) JAXB seems to be being used to parse XML, which is a departure
> > from all of our other services which expect parsing to be done
> > during
> > deployment processing in a more efficient manner. Is there any
> > better
> > way we can integrate this, preferably not using JAXB?
> It works well so far in standalone distro, but I'm open to
> alternative
> mechanism in either standalone or EE.
> >
> > #5) There are a number of resources present that seem inappropriate
> > for the production JAR [2] [3]. Is this intentional?
> These are work in progress. sql files are for implementing a jdbc
> job
> repository. Why are they inappropriate?
> >
> > #6) This code base makes extensive use of static state, including
> > static fields that seem not to be adequately protected for
> > thread-safety, and at least one static thread pool [4]. This needs
> > to
> > be fixed, as these kinds of things make embedding difficult or
> > impossible.
>
> In EE environment, thread pool will switch to the managed service
> provided by WildFly, preferably the new concurrency utils. Can you
> list
> other places you've noticed that make bad use of static state?
>
> Appreciate your feedback.
>
> Cheng
> >
> > [1]
> > https://github.com/jberet/jsr352/blob/master/jberet-core/src/main/java/org/jberet/repository/AbstractRepository.java#L50
> > [2]
> > https://github.com/jberet/jsr352/tree/master/jberet-core/src/main/resources/sql
> > [3]
> > https://github.com/jberet/jsr352/blob/master/jberet-core/src/main/resources/jobXML.xjb
> > [4]
> > https://github.com/jberet/jsr352/blob/master/jberet-core/src/main/java/org/jberet/util/ConcurrencyService.java#L22
> >
>
> _______________________________________________
> wildfly-dev mailing list
> wildfly-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/wildfly-dev
>
More information about the wildfly-dev
mailing list