Re: What is Jakarta?

2001-02-08 Thread Rodney Waldhoff

A little backstory on the connection pooling mechanism I submitted to Struts 
a while back:

A couple of months ago, at the company I work for we ran into problems with 
the connection pooling implementation within the commercial product we were 
using.  Specifically, (a) the pool itself was buggy and (b) the pool 
implementation made it difficult for us to pool PreparedStatements and the 
parse rate of unpooled PreparedStatements within the database was becoming a 
bottleneck to application performance.  For this reason I put together a 
Connection/PreparedStatement pooling implementation that met our needs.

Completely independently, I noticed the Struts project on 
jakarta.apache.org, started to poke around a bit, and subscribed to 
struts-dev and struts-user.  I noticed that Struts had a basic connection 
pooling implementation.  I also noticed several requests on struts-dev and 
struts-user looking to expand the functionality on the Struts connection 
pool.  Many of the features (in fact all of the features) that were being 
asked for were/are features of the Connection/PreparedStatement pool I put 
together.  So, I repackaged my code as org.apache.struts.*, and submitted it 
to the list.

This is the way open source development is supposed to work, no?  I had an 
itch, I scratched it.  I noticed others had the same itch, so I offered it 
up.

Now, unbeknownst to me, the Turbine project over at java.apache.org also has 
a connection pooling library with similar functionality.  Maybe it's my 
fault for not knowing this.  Maybe it's the struts-dev folk’s fault (sorry 
guys) for failing to mention that there is a connection pooling library in 
Turbine over at java.apache.org.  Maybe it's Apache's fault for not 
providing a clear picture of what is available and where.  Maybe it doesn't 
matter anyway because I think my pool is better designed, easier to 
maintain, or more feature rich than the existing one, in which case I think 
it's up to the community to decide which implementation they'd like to use. 
(And before we go off on a a holy war here, I'm not saying that I do think 
that.  I'm specifically not saying that one impl is better or worse than the 
other. Not having looked at the Turbine stuff in detail, I'm in no position 
to state that.  I'm just saying that that is a valid position to take.  It 
could be wrong (in the eyes of the community) but it's not unreasonable.)

Jon's response to this, when brought up in a slightly different context, was 
a bit off-putting:

  Meanwhile, I do think there would be a lot of interest in a Jakarta
  connection pool. In fact, someone has offered to donate one to Struts.
http://marc.theaimsgroup.com/?l=struts-devm=97967619230491 

Totally friggen lame.

*All* of that code (and more) is already implemented in Turbine and can be
used outside of the core "Turbine" system very easily.

If all of that functionality is available in Turbine, that makes it 
*redundant*, not lame.  Moreover, having poked around a bit in the Turbine 
stuff (and granted, I didn't poke that hard or that long, so maybe I missed 
it), it seems to me that not "all of that code is already implemented in 
Turbine".  Specifically, (a) I don't see that Turbine is doing any pooling 
of PreparedStatements, which if you recall was the major itch I was trying 
to scratch, (b) Turbine's Connection pool seems to require specific 
references to TurbineDB--so that legacy code has to be retrofitted to work 
with Turbine's pool, (c) Turbine's pool doesn't seem to support a 
javax.sql.DataSource interface.  Could Turbine's pool be modify to support 
these things? Of course, but I wasn't aware of Turbine's pool when I first 
submitted mine.  Moreover, Jon's response doesn't make me feel like my 
contribution is very welcome there.

Frankly, there seems to be some underlying Turbine vs. Struts politics here 
that I don't want to get involved in.  If you'd like to debate the merits of 
one pooling implementation versus another, or to work to see the full suite 
of functionality implemented in a single pooling library, or perhaps to 
debate whether or not more than one pool implementation is warranted, then 
let's do so.  But I don't think a knee-jerk response like that does much 
more than alienate potential developers.

I was going to segue this into a discussion of how a more modular 
utility/services/library project or set of projects is warranted, but I see 
that Morgan and Ted have already kicked that off in earnest, so I'll follow 
up in that thread.

- Rod

-Original Message-
From: Steve Downey [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 07, 2001 4:23 PM
To: '[EMAIL PROTECTED]'
Subject: RE: What is Jakarta?


It may not be easier, but it's certainly more fun. And it often seems easier
to build to suit than to adapt something.


-Original Message-
From: Jon Stevens [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 07, 2001 3:24 PM
To: [EMAIL PROTECTED]
Subject: Re: 

Problems getting Apache-Tomcat on the jk-module running!

2001-02-08 Thread CARL-HENRIK . LILJEGREN . SP

Hi everybody,

could somebody please give me a hint, on how to get Apache-Tomcat on the
jk-module running??? I've tried everything...

Discription:
---
I'm using Apache 1.3.17 and Tomcat 3.2.1 (JDK 1.3) on a Linux-Maschine.

I've built Apache with the mod_jk.c of the source distribution of Tomcat:

./configure \
--prefix=/usr/local/kalle/apache \
--enable-rule=SHARED_CORE \
--add-module=/usr/local/kalle/jakarta-tomcat-3.2.1-src/src/native/apache1.3/
mod_jk.c \
--enable-module=most \
--enable-shared=max \
--disable-rule=WANTHSREGEX \
--enable-shared=jk

(I also tried to build the mod_jk-adapter from the source distribution of
Tomcat and adding this to Apache (shared object building enabled) manually.)

I've checked the resulting structure of Apache, and it looks just fine
(jk-module was added). The mod_jk.conf-auto of Tomcat is included. I've
configurated Tomcat to match the work.

The Problem:
---
As I try to start Apache I get an error:

# apachectl start

Syntax error on line 238 of /usr/local/kalle/apache/conf/httpd.conf:

Cannot load /usr/local/kalle/apache/libexec/mod_jk.so into server: 

/usr/local/kalle/apache/libexec/mod_jk.so: 

undefined symbol: map_name_at 

./apachectl start: httpd could not be started

--- What does this msg mean, and how could I prevent it??


Thanks for Your help,

C.H. Liljegren
Virtos GmbH
http://www.virtos.de

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Re: What is reuse

2001-02-08 Thread Sam Ruby

Conor MacNeill wrote:

 So now we have connection pooling code in two places.
 Duplication isn't great but it happens, and sometimes
 it even happens in the same project. It is a
 refactoring opportunity. Now that we have recognized
 that, surely we can find the best solution, find
 somewhere for it to live (which may be where it
 already lives) and increase our reuse going forward.
 The bigger issue is to improve our communications,
 cataloging, etc so reuse is easier, going forward.

To borrow a popular phrase from the 70's, "duplication happens".  For those
of you who are too young, go see a great movie named Forrest Gump.

I'm not overly concerned about non-observable duplication, but when each
project requires its own separate set of database connections something is
wrong.

 This seems to me to be exactly the sort of cross-project
 issue the PMC is designed to handle. Perhaps the PMC
 should consider whether to adopt a policy of reuse across
 Jakarta projects, what that policy might be, whether the
 policy should be promoted through a library subproject, etc.

Recast into corporate terms, three PMC members (Jon, Craig, and myself)
identified this issue and put out a request for a task group to be formed.
A number of people volunteered and the discussions are published for all to
see.

The original note that sparked this ("What is Avalon?") was one week old
last night.  Welcome to the wonderful, and fast paced, world of open
source.

One final point, the PMC does not determine the content of the Jakarta web
site, nor will it be publishing a catalog.  We leave that to volunteers.

- Sam Ruby


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




RE: What is Jakarta?

2001-02-08 Thread Theo Keyzer

Thursday, February 08, 2001 10:29 AM GOMEZ Henri wrote:
 I'm +1 with Arieh Markel about

 . Jakarta Base Network Utilities
 . Jakarta Base JSP Utilities
 . Jakarta XML Utilities
 . Jakarta SMTP Utilities
 . Jakarta Tools

How do you make the tools so that they don't tie
into applications too closely, or become 
sub-applications - not needed to build any Jakarta project.
Or can they if they are still add on tools for a Jakarta package.

Theo




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




[Long] Code Sharing Concepts

2001-02-08 Thread Craig R. McClanahan

Several times, on several developer lists here within the Jakarta
community and elsewhere, the question comes up -- "why aren't we sharing
more code between projects and subprojects"?  Lots of us have opinions
and experiences about where this has worked (and not worked) for them in
the past.  The purpose of this thread is to discuss how we can create
and/or accumulate some infrastructure within Jakarta to encourage
sharing.

In order to accomplish this, some discussion on a wide ranging set of
concepts would be useful, so we can come to consensus on what steps we'd
like to see the Jakarta community do (if anything), and how.  As a
starting point for these discussions, I've outlined a few issues below
we might want to consider.


(1)  Subproject Or Community Resource?

This is a fundamental organizational / process question.  If a shared
library codebase is to be a separate Jakarta subproject, it would need
to be managed in the usual manner (sponsored by a set of initial
committers, have an initial codebase, proposed to PMC, voted and
accepted).  Alternatively, the shared code could be a "resource" to the
entire project, but that raises some interesting process and policy
questions:

* Who gets commit access?  All committers on all subprojects?
  If not all, how do you choose?

* Who decides whether a proposed codebase should be added
  to the shared library?

* Who arbitrates cases of conflict over goals of a particular module
  or set of classes within the shared code?

These issues are all normally handled by committer votes in a normal
Jakarta subproject -- the absence of such processes would seem almost
certain to create conflict.  Therefore, IMHO, we should commission a
regular subproject for this (assuming there are enough interested
committers with enough code to be worthwhile).

NOTE:  As with Ant, there is an issue of whether code in a shared
library like this fits the scope of the Jakarta Project as a whole, as
defined by the Board of the Apache Software Foundation.  We have sort of
established a precedent that saying "libraries useful in the
construction of server components" (such as the regular expression
libraries) are in scope -- but would we accept a library of Swing GUI
components?  Even if they were going to be used to build admin consoles
for server apps?


(2)  Functional Scope - What Is A Shareable Package?

IMHO we need to identify some basic rules that define what code modules
are reasonable candidates for being included in the shared library
(instead of in a particular subproject).  The following paragraphs
identify some dimensions along which such a decision might be defined.

(2a) Horizontal or Vertical Orientation

Peter Donald spoke of "vertical" integration as a typical model of code
sharing that goes on now -- projects that depend on each other, but
semi-autonomously.  It seems to me that what we are talking about here
is "horizontal" integration -- identifying code that is truly useful in
many domains, but without carrying along the baggage of dependency on
lots of other pieces of an existing subproject.

There are many code modules where its pretty obvious that the
functionality provided is shareable and independent.  But, IMHO, above a
certain level of complexity you will tend to find dependencies -- either
explicit because of shared APIs or implicit because of shared design
assumptions -- on particular application use cases or design patterns.

We should strive, at least initially, to collect code that is relatively
simple and independent of such assumptions, to avoid concerns about
vertical dependencies.  Over time, we can get better at identifying the
selection criteria for more complex cases.

(2b) External Dependencies

A fairly unambiguous criteria that can be used for admitting proposed
modules to the shared library are what external dependencies that code
has.  The following paragraphs identify some simple cases that we should
create policies for:

Core Java APIs - JDK 1.1 or 1.2? - Many Jakarta subprojects still wish
to (or must) remain compatible with JDK 1.1.  Does that mean the entire
shared codebase must be JDK 1.1-compatible?  Do we support multiple
versions of some functionality to support this?

Optional Java Package APIs - If a shared component provides
functionality around a standard Java API (such as a connection pool
around the JDBC APIs), should it be required to conform to those APIs,
or may it define its own?  What happens when a Java API is standardized
after existing implementations of an API (past example = JDBC data
sources; upcoming example = JSR for a Logging API)?  Should it be
possible to build the shared library (without support for this
particular API) if the API itself is not available on the developer's
environment?

External Package Wrappers - It is reasonable to visualize JavaBeans (or
collections of JavaBeans) that provide insulation wrappers around
complex external packages (such as an XML parser) that make use of those
packages.  If 

Re: bugs

2001-02-08 Thread James Duncan Davidson

on 2/8/01 1:19 AM, Ceki Glc at [EMAIL PROTECTED] wrote:

 1) Who should be contacted in case of problems with ABDB? I have refrained
 from listing Pier's address publicly.

webmaster@ -- we need to get some more people behind that address to make
sure that things are handled.

 2) Why should a user need to file a bug report with ABDB and post to the
 corresponding developers mailing list? I think that filing a bug report should
 automatically trigger a post to the appropriate dev ML. Another possibility is
 to *make sure* that the concerned developers get notified through e-mail about
 the bug report. The requirement to have the user report bugs twice, once
 through ABDB and once through a ML is not optimal.

Agreed. 

-- 
James Duncan Davidson
http://x180.net/ !try; do();


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




RE: What is Jakarta?

2001-02-08 Thread Sam Ruby

Costin Manolache wrote:

 What's wrong with having multiple thread pools or db pools, each
 having special characteristics and working best in different
 situations ?

Different, plug compatible, db pools would be great.

Having each project early bind to a specific one is not.

If I wanted to run JetSpeed and Coocoon today on the same web server, I
would have to statically apportion my database connections between the two.
Add Struts into the mix and I must further subdivide.

Overall, I'm not overly concerned if we have multiple XML mappers.
Arguably it would be better if we didn't, but on the other hand a little
duplication sometimes removes the requirement for a lot of coordination.
In other words, if this is an itch that somebody wants to scratch, I would
encourage them to do so, but if not, I wouldn't want to mandate it from
above.

- Sam Ruby


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]