Re: session management

2002-05-17 Thread Curt Smith


 earlier i did this with loadserver, that was working well, but the
 problem in that , if the server where loadbalancer is running goes
 down , my application will be killed.


I agree that loadbalancer.jar is a great concern!

No one's told me that a product like the Cisco Redirector would'nt work.

What's wrong with DNS round robin is that it does not provide session
sticky routing of a client to the same box.  Redirector and most other
true load balancer boxes do this.

Cisco Redirector and it's equivelants are in theory more reliable than
a CPU/Box running java and loadbalancer.jar.

curt


-- 

Curt Smith
[EMAIL PROTECTED]
(w) 404-463-0973
(h) 404-294-6686







Re: EJB Caching

2002-04-13 Thread Curt Smith

Assuming this Q is regarding a stateless session bean, does Orion's 
deployer/bean validator
allow bean's with static attributes to be deployed?   A lightly loaded 
system that did not pool
bean instances after each method call and only occassionally had two+ 
instances active at the
same time who used static variable and ran into concurancy problems 
might exibit behavior
that would cause a question like this??

Else it sounds imposible for a properly designed SLSB method to return 
same state
as a previous method?  Hmmm.  

Perhaps the bean code and more details are necessary here?

curt

Derek Akers wrote:

 Our application running on Orion uses a stateless EJB instance to 
 invoke threads that execute application logic.   We are having a 
 problem with these EJBs chaching themselves and returning values 
 from previously executed calls rather than executing the thread 
 desired by the present call.  This does not happen all the time, but 
 often enough to be worrisome.  Question is, is there any way to stop 
 this behaviour?

  

 Derek Akers

 Director of Product Development

 Eldan Software Limited

 (416) 341-0070

 www.eldan.com http://www.eldan.com/

 -

 We build software for people, not computers


-- 

Curt Smith
[EMAIL PROTECTED]
(h) 404-294-6686
(w) 404-463-0973








Re: How to display a directory using Orion as a webserver?

2002-04-11 Thread Curt Smith

Is there a way to scope the directory listing to particular roots or 
directories?

thanks, curt

Kesav Kumar wrote:

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

You need to add directory-browsing=allow attribute to orion-web-app node
in orion-web.xml.  You can find this orion-web.xml in
applicationdeployments\application\webapplicationname directory.







Re: JDBC try/catch Pitfall ***MUST READ***

2002-04-09 Thread Curt Smith

try {
...
return;
} catch () {}
finally {
  // must always come here per the Java VM spec
  // else it's a bug
  // Not calling the instance obj ref methods is a serious bug IMHO
}

To me this looks like a bug not an odd side effect.

What's your operating environment?  Linux?

curt





Re: CMP 2.0 vs BMP - Which performes better?

2002-04-04 Thread Curt Smith


 There are several constraints to BMP beans which make them almost always
 perform slower than CMP beans.  In particular, the inability to bulk
 load beans from finder methods is a nearly fatal defect.


I'd like to know more of the details?

How does the container deal with the following finder in CMP
differently than BMP?

Collection remoteRefs = home.findSalaryGreaterThan ( 50,000);

Or what was the scenario you where refering to?

To me the finder returns a collection problem is but one of the
damning EJB achilies heals, in that the spec left out setting
the max row count to limit the find collection to.

How does CMP help the huge memory and CPU and JNDI hit that
a boundless findAll() causes?


Thanks, curt








Re: Showing Error Messages

2002-03-12 Thread Curt Smith

You're probably using IE as your browser.

Go to Tools-Internet options-Advanced-
- uncheck Show friendly HTTP error messages

(so nice of IE)

curt

Deniz Bocek wrote:

 Hi all,
 I have Following problem:
 If my jsp files or servlets has a error -sytax error or any java error- it
 shows only
 The page Could not be displayed.
 HTTP 500 Internal Server Error.
 No more than this.
 normally it should say for example syntax error onlie XX in aaa.jsp
 some think like this..
 What could be the problem? or Is this normal for orion?
 Thanxx..
 
 


-- 

Curt Smith
[EMAIL PROTECTED]
(w) 404-463-0973
(h) 404-294-6686







Re: Performance declines after moving to a faster Server

2002-03-07 Thread Curt Smith

NT offers a near infinate number of causes for slowness.

Start by installing a good defrag'er and defrag all disks.

Your new box may have dog slow disks? Eh?

How about size of L2 Cache?  Do the PIII's have same size L2 cach
as the PII's which I think where all 256Kb... Or maybe there where a
bread of early PII's that had 512Kb?

Your new box may have a slow as molasis NIC or a crapie driver with
your new install of NT.

Here's a set of tools to test:

- Ftp to both boxes from a 3rd box of a large file (50Mb) time it.
This will test both the NIC the LAN and a much lesser extent the
disks.

- find iozone  it's a common tool on unix, I found a copy for NT.
It's great a measuring disk io.

- Check that your NIC is hard set to full or half duplex.  Don't let
it choose via auto.

* This might be your problem.  *

Good luck, curt

Cugier (extern) wrote:

 Hi, 
 
 we are running a simple web applications - just servlets - on an older
 Windows NT Server with two Pentium two 233 MHz CPUs. The performance on the
 server was acceptable and pages showed up pretty quickly in the browsers. 
 
 Now we bought a new server (still Windows NT) with two Pentium III Xeon 8xx
 MHz CPUs (same amount of memory) and moved the application to the new
 server. We expected that the performance would increase because of the
 faster CPUs but the opposite happened. Our first tests showed a dramatic
 increase of response time. Pages that showed up in just one or two seconds
 on the old server, now take ten and more seconds to show up. 
 
 We start Orion with the same java runtime parameters as on the old server.
 Also the configuration of the Apache server that we use a front end to Orion
 did not change. 
 
 Does anyone have an idea how this performance decline is possible? Shouldn't
 it be faster on fastes CPUs?
 
 


-- 

Curt Smith
[EMAIL PROTECTED]
(w) 404-463-0973
(h) 404-294-6686







Re: System Date.

2002-02-13 Thread Curt Smith

You might want to add to your startup script (on Unix)
setting var  export TZ=EDT
and set locale too

curt


Geoff Soutter wrote:
 I've had problems with Java timezones before. As I remember, Unix 
 inherits timezone settings from it's environment. Did you run your java 
 test class with the same environment as Orion (eg the same user)?
 
  
 
 geoff
 
 -Original Message-
 *From:* [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED]] *On Behalf Of *Troy Gibson
 *Sent:* Wednesday, 13 February 2002 6:00 AM
 *To:* Orion-Interest
 *Subject:* System Date.
 
 Having trouble with system Date. In Orion our application converts
 dates based on our users time zone. For some reason our application
 is producing incorrect date times. The same piece of code when ran
 on its own as a Java class produces correct time conversions. Are
 there environment variables that Orion uses that may cause it to
 interprets the system date differently than what the system date
 really is? We use a staging and production instances of Orion
 running on two different Unix boxes. Both boxes have the same system
 date, the application running on staging produces correct dates, the
 one on production does not, further evidence that maybe the problem
 lies with the Orion instance and not the code or the servers.
 
 Thanks for any ideas you may have.
 



-- 

Curt Smith
[EMAIL PROTECTED]
(w) 404-463-0973
(h) 404-294-6686







Re: [announce] Log4J Appender for Orion's application.log

2002-02-07 Thread Curt Smith



Geoff Soutter wrote



I've hacked up an Orion Appender to allow you to log to the
application.log file, via the Logger instance that Orion installs at
java:comp/Logger. Here it is in all it's glory, use it however you wish.

Cheers

Geoff

PS, did anyone figure out if it's possible to get orion to roll it's log
files when they get too big? ;-)

How about Orion logs to a log4j output device instead of apps logging to 
Orion's log
files?   Or did I miss understand this functionality??

Personally I feel the new log4j 1.3 features that make it easier for 
each application
to have it's xml config file in the .war / .ear so that apps can have 
their own (separate)
log files from each other to be a very useful choice.

My view of the problem of deploying and supporting a j2ee app is the few 
features j2ee
put in the spec (a big zero) to allow debugging and logging of app, 
feature, bean operations.
I feel we need to drill on the debugging problem until we have a 
facility that supports
logging based on session ID, so that we can follow a particular user's 
actions and
failures across a cluster and set of services.

To me, moving to one log file for the universe is the wrong direction? 
 Any opinions?

curt






Re: [announce] Log4J Appender for Orion's application.log

2002-02-07 Thread Curt Smith


 reports itself in the correct context, so you can see how they happened.


Yes and a nice feature.  To be production quality we'd need file size
roll-over and max-number of log file aging...

Hmmm, this could be externalized in a script IF orion's logger didn't
keep the file descriptor open between writes (probably does).

curt






Re: automatic invocation of servlet as the root-service

2002-02-02 Thread Curt Smith

 How to setup virtual hosting with Orion:

 http://kb.atlassian.com/content/orionsupport/articles/vhosts.html


Thanks Scott,  great tutorial on virtual hosting with orion!

orion_love_fest
Ya gotta love Orion, the orion developers, all the folks from Atlassian,
Elephantwalker and mail list contributors!!Hay, if big Larry E. 
votes with
his pocket book and mouth, Orion's getting the respect it's deserved.
Go Orion, eat WLS, kick Websphere...  -falling off chair dizzy,,...
/orion_love_fest

Thanks guys!









Re: automatic invocation of servlet as the root-service

2002-02-01 Thread Curt Smith





The drawback of this method is, that now _only_ the servlet can be
invoked within this instance of orion - nothing else! But for our
purposes this is just fine.

It would be great if the J2EE /web.xml specs supported virtual hosting. 
 I.E.  URL based
routing at the web container level to an application.   Like Apache 
virtual hosting on the
same IP/Port.

curt








Re: long sessions

2002-01-30 Thread Curt Smith





We use this object to check if a visitor has logged into the web site or not

Using HttpSession for checking definitatively whether that user has 
logged in or not won't
work.

The HttpSession will still be associated with that user's browser if and 
only if they
use the same browser.  If they use Netscape VS IE, different cookie and 
thus different
HttpSession.  Stop start the same browser, different cookie again.

Use a HashMap/HashTable in the ServletContext object, keyed on userID
instead.  Create an instance of UserAccess object and add to the the 
HashMap in the
ServletContext.

class UserAccess {
Date lastAccessDate;
String userID;
...
}

This will be absolutely a minimal impact on memory foot print and work.

Good luck,

curt









Re: Simple question re caching/pooling of BMP Entity Beans

2002-01-10 Thread Curt Smith

My opinion would add;  

if not pooled OR not exclusive owner of data then ejbLoad

exclusive owner is an orion-ejb-jar.xml propert.  The default is,
exclusively owns the data.

curt


Sergey G. Aslanov wrote:

Hi Geoff

Loading of beans have these stages:
1. calling ejbFindBy... to get the primKeys of the entities;
2. checking if entities with such keys are already pooled;
3. for every key checking: if not pooled - call ejbLoad, else - get instance
from pool;

As you see, ejbFindBy... are called always independently of entity
is pooled or not.

Thursday, January 10, 2002, 2:01:37 AM, you wrote:

GS Hi there,

GS I'm teaching myself how to use Orion and I've got a simple question
GS about caching/pooling of BMP Entity Bean instances.

GS I've created a simple app which lets me read a BMP Entity Bean through a
GS Session Bean. I would expect that when I call findByPrimaryKey on my
GS Entity Bean's home interface, Orion caches the instance it creates so
GS that next time I call findByPrimaryKey for the same key, it just returns
GS the instance it already has rather than creating a new one. However, it
GS appears that it goes to the database (i.e. calls ejbFindByPrimaryKey in
GS the Entity Bean's implementation) for every call to findByPrimaryKey,
GS regardless of whether it has previously read the instance with the
GS specified key before.

GS I checked the list archive and it appears that someone has reported a
GS similar problem a while back but there were no replies
GS (http://www.mail-archive.com/orion-interest@orionserver.com/msg17359.htm
GS l).

GS I also checked the documentation and for orion-ejb-jar.xml it states
GS that exclusive-write-access is true by default, and since I am not
GS setting it I presume it's defaulting to true which should allow Orion to
GS cache the entity beans.

GS So, can anyone shed any light on how whether/how I can get Orion to
GS cache BMP entity beans?

GS Cheers

GS Geoff


--
Sergey G. Aslanov,
CBOSS Group,
Web-technologies department
mailto:[EMAIL PROTECTED]
tel: +7 095 7555655


-- 

Curt Smith
[EMAIL PROTECTED]
(w) 404-463-0973
(h) 404-294-6686









Re: Can't init Log4j...

2001-12-27 Thread Curt Smith

Here's my code that I put into my Servlet.init() and web.xml

web.xml:


  env-entry
env-entry-namelog/log4jlcfPath/env-entry-name
env-entry-typejava.lang.String/env-entry-type
env-entry-value/WEB-INF/log4j.lcf/env-entry-value
  /env-entry


Servlet.init()

//===
// Initialize log4j logging

try
{
InitialContext ic = new InitialContext();
String lcfResource = (String)
ic.lookup(JNDICommonNames.LOG4J_CONFIG_PATH);

Debug.println(PKGNAME + .init(): log4j config file at path= +
lcfResource);

// Init the Log4j singleton

String lcfPath  =
getServletContext().getResource(lcfResource).getFile();

Debug.println(PKGNAME + .init(): log4j config file at lcfPathURL= +
lcfPath);

// watch for changes to the config file every 60 secs
 PropertyConfigurator.configureAndWatch (lcfPath);

}
catch (NamingException ne)
{
// Log4j not init'ed
Debug.println(PKGNAME + .init(): lookup( +
JNDICommonNames.LOG4J_CONFIG_PATH + ), caught exe= + ne +
Debug.getStackTraceString(ne));
}
catch (Exception se)
{
//== ERROR=
//
// Down side is that we won't have logging
// - Proceed anyway!
//
// Use the Debug.println() method to log to the container's console

Debug.println(PKGNAME + .init(): lookup( +
JNDICommonNames.LOG4J_CONFIG_PATH + ), caught exe= + se +
Debug.getStackTraceString(se));
}



Paolo Perego wrote:

 Hi orion gurus, it's me again. I properly installed log4j for my logging
 needs. I wrote a little servlet, as explained in log4j docs, to initialize the
 framework when orion boots ( I added a servlet entry in web.xml of course ).

 My application log says:
 27/12/01 11.46 gestWebApp: Error initializing servlet
 java.lang.NoClassDefFoundError: org/apache/log4j/PropertyConfigurator
 at com.modiano.gest.log4init.init(log4init.java:24)

 I guess that orion don't take a look on my $CLASSPATH :( How can teach it to
 make my log4j framework working :(

 Ps: In log4j documentation there isn't any reference to start the framework
 using orion :(

 Thank you
 --
 $cd /pub
 $more beer

 (0
 //\  Perego Paolo [EMAIL PROTECTED] - www.sikurezza.org/angel
 V_/_ 'It's seems the hardest life I've never known'
 I'm Linux drow 2.4.16-4GB - SuSE Linux 7.3 (i386) powered.

   
Part 1.2Type: application/pgp-signature

--

Curt Smith
[EMAIL PROTECTED]
(w) 404-463-0973
(h) 404-294-6686






Re: Off-topic: UML Tools...Help!!!

2001-12-07 Thread Curt Smith

I have a team using TogetherJ for our modeler, IDE and deploy tool.
TogetherJ, the first to market with a great all Java UML modeler, round trip
code generator product.  Supports all IDE functions including debugging into
your appserver's VM, deploy, call Ant, JUnit etc etc.  Very feature rich.

togethersoft.com

Curt

Oisin Kim wrote:

 John,
 have a look at Poseidon, the community edition is free and it's 100%
 Java so multi platform, although it runs best with 1.3.1_01 JRE...
 Oisin

 On Thu, 2001-12-06 at 15:28, [EMAIL PROTECTED] wrote:
  Hi,
 
  I have been asked by my manager to evaluate some UML modelling tools:
  Rational Rose and Select. However, I have never really used UML so I
  probably wasn't the best person to ask :)
 
  So, if anyone could tell me any pros and cons of these packages I would
  appreciate it. Developers are gonna be using JBuilder 5 Enterprise, and the
  idea would be to farm out classes/beans you have designed and structured in
  the UML model.
 
  Any information or experiences you would like to share would be appreciated
  as I don't have a clue :)
 
  Thanks,
 
  Johnny
 
 
  Confidentiality Notice:
  The information in this e-Mail message is confidential and for the use of
  the named recipients only. The information may be protected by privilege,
  work product immunity or other applicable law.
  If you are not the intended recipient - the retention, dissemination,
  distribution or copying of this e-Mail message is strictly prohibited. If
  you receive this e-Mail message in error, please notify me immediately by
  telephone (44 207 384 8102) or e-Mail ([EMAIL PROTECTED]).
 
 --

 
 Oisin Kim
 Software Engineer
 Aurium - the new brand for Conceptual Drift
 Clifton House
 Lower Fitzwilliam Street
 Dublin 2
 Web - http://www.aurium.net
 Email - [EMAIL PROTECTED]
 Mobile - +353 86 841 9967
 Telephone - +353 1 661 1132
 





Re: An object getting null when passed to remote method !

2001-12-06 Thread Curt Smith



[EMAIL PROTECTED]">
  // Creating the second entity bean
  Classification myProducerClassification
=  theClassificationHome.create("myProducerClassification",  theProductManager);
  
  
My opinion is; a bean's remote interface is not ment to be serialized as
an arg to
another bean. The home handle yes, the interface no.  Perhaps the interface
is
not serializable, and errantly no exception is raised when it's attempted,
but the
null ref is the end result.
  
Just my thought; passing bean references is not the best design, try passing
the home 
handle and call create/find from the client bean's context. Remote interfaces
are
attached to sockets, in a clustered environment or in some containers, the
remote
bean may be in a different VM, making the socket reference useless.
  
Good luck,
  
curt
  
  
  


Re: Announcement of new doc

2001-11-21 Thread Curt Smith





 My 2 cents worth is this is the order of importance of documentation 
 that is
 needed right now to do REAL professional deployments and developments 
 with Orion/OC4J


 1) Orion specific deployment settings explained
 these are not really explained anywhere right now.


My configuration challeng that I haven't figured out is; how to support 
multiple
web components.

I'm prefering the expanded tree deployment where I'd have multiple
web/WEB-INF/web.xml  trees.   All need to be in the same restricted
single-signon scope.  I.E.

root/web1/WEB-INF/web.xml
  /web2/WEB-INF/web.xml



The confusion between default-web-site.xml, orion-web.xml, 
application-name, name
...  :-/

Anybody have configuration to share of multiple .ear in one application 
or multiple
web directories??

Thanks and have a great TG holidays,

curt





Re: Announcement of new doc

2001-11-21 Thread Curt Smith





 My 2 cents worth is this is the order of importance of documentation 
 that is
 needed right now to do REAL professional deployments and developments 
 with Orion/OC4J


 1) Orion specific deployment settings explained
 these are not really explained anywhere right now.


My configuration challenge that I haven't figured out is; how to support 
multiple
web components.   It would be great if new doc would show how to
configure a typically complex scenario??

I'm preferring the expanded tree deployment where I'd have multiple
web/WEB-INF/web.xml  trees.   All need to be in the same restricted
single-signon scope.  I.E.

root/web1/WEB-INF/web.xml
  /web2/WEB-INF/web.xml



The confusion between default-web-site.xml, orion-web.xml, 
application-name, name
... has not gotten it all to work yet..  Each attempt has one problem or 
another  :-/

Anybody have configuration to share of multiple .ear in one application 
or multiple
web directories??

Thanks and have a great TG holidays,

curt





Re: Course Grained Entity Beans...your thoughts....

2001-11-20 Thread Curt Smith

Maybe folks could comment on my thoughts?

- Most client traffic (web site etc) is read only.  I.E. building pages 
showing store
   catalogue, browsing available plane seats etc etc.   Why run read 
only traffic
   through architecture optimized for transactional robustness?   That 
is unless
   you want to buy more hardware and deliver slow response for everyone.

- Given, the reality of traffic read VS write, I feel that highest 
performance,
  scalability and low latency will be from an architecture based on DAO for
  read only operations from the client - business deligate tier.   I.E. 
 from beans
  called from JSP's directly.

- Allow the client tier business deligate methods to direct  read only 
traffic
  to DAO's.  Other methods that are transactional (CRUD), are directed to
  session bean methods to mediate entity business logic.   Local 
interfaces would
  speed these operations greatly!

- EJB 2.0 local interfaces and coarse grained beans will always eat CPU, RAM
  and scalability, latency when compared to DAO for read only operations.

- Coarse grained beans can actually be a serious resource hog if you 
don't implement
  lazy instantiation of the dependant  1:M components.  Else you'll be 
hitting the DB
  and building the 1:M objects when the M part isn't accessed.

- Does EJB 2.0 CMP for coarse grained beans implement lazy instantiation 
of the
  dependant compents??  If not, or your container vendor hasn't, watch 
out??...

- The new best practice EJB architecture as of EJB 2.0, makes sense if 
you're
  architecting a shrink wrapped product that has to work with customer 
supplied
  DB's and schema's.  I don't believe this is very common, nor will be. 
 So why are
  the  Sun J2EE blueprints showcasing this architecture?  I don't know.

I'll be sticking with the architecture that's based on DAO and EJB for 
transactions
only.  

BTW, my thoughts on QL vs SQL...   QL and CMP is just one more pain that
I see folks sinking bunches of time in.   You need to own your data and 
will end
up spending the same time needed to write DAOs and SQL anyway, so why
not do it?

curt



I was reading the J2EE design patterns book and it suggested using a Course
- grained approach at building your entity beans (dependent tables accessed
via Data Access Objects). However, after inspecting the new 2.0 specs, and
considering the inclusion of EJBLocalHome and EJBLocalObject, is it
necessary to still follow this recommendation? I personally would rather not
code DAOs, however, if there is a performance gain by doing so, I would.

Thanks for you advice.
Aaron.







loadbalancer.jar: what does it do, really?

2001-11-16 Thread Curt Smith

I'd like to use a my Cisco loadbalancer that can do session
sticky affinity based balancing instead of loadbalancer.jar.  
Is there doc or can someone list the functions of loadbalancer.jar 
so that I might safely know if my desire is possible?

I've heard that folks have used other HW based load balancers
successfully or where there issues?

Thanks, curt


Curt Smith
[EMAIL PROTECTED]
(w) 404-463-0973
(h) 404-294-6686 




Re: loadbalancer.jar: what does it do, really?

2001-11-16 Thread Curt Smith



[EMAIL PROTECTED]">
  the loadbalancer.jar does sticky ip by default itself
and we have had to turn it off when because of the above issues.
  
How did you solve your problem?
  
Looking for thoughts on my problem; 2 boxes available for clustering.
I have a Cisco Director (SP?).  But I don't have a 3rd box in production
to run the loadbalancer.jar on.
It would be a single point of failure anyway so How would a resilient
architecture be assembled
from what I have available?
  
One option that I see is to NOT cluster, and deploy several instances of
Orion across 2 boxes. Use
my Cisco Director HW loadbalancer to direct requests across the Orion instances.
If an instance failes
or locks up, Director is smart enough to stop routing requests to that Orion
instance.
  
This config just drops the customer's requests on that box or instance, and
delivers scalability across
two boxes.  To me, this is preferable to a single box where if it fails
customers won't get service until
support comes in the next morning... :\
  
thanks, curt
  
  [EMAIL PROTECTED]">
 
 






RE: jdbc performance Orion vs. WL

2001-10-24 Thread Curt Smith

 Did you use the ejb-location (this is the best)? Also, did you use the
 latest 9i jdbc drivers from Oracle? You need to repeat the test with
 updating and inserting. Also, create several connections at once 
 to use the
 pooling feature.

ejb-location ??  I'm interested in what you're saying here?

re: your benchmarking; another poster also gave thoughts to configure
a connection pool, data-sources.xml, and set min connections to be
a reasonable number.

- To better stress the container vs just see DB performance or JDBC driver
memory thrashing on the result set performance, why not have a test
fixture that hit your servlet with 100 simultaneous requests.I think
this is where WLS will be much heavier.  WLS would also be at more of
a disadvantage in EJB, especially Entity, performance. 

I believe this test is more of a JDBC / DB performance measure and the
7 sec is due to the 8i thin driver.Lets see if anyone gives perf
comparisons between 9i thick vs thin??

Anybody have subjective comparison between 8i thick/thin  VS 
9i thick/thin drivers??   

How about useful new features in the 9i thick/thin drivers?

Thanks,

curt





RE: SQL monitoring

2001-10-24 Thread Curt Smith


A previous poster announced this tool and it works
-- snoops the JDBC wire as a proxy --

There is a free tool at http://www.provision6.com that
intercepts and logs all database statements of any
application that uses JDBC.  This is particularly
useful, for example, for monitoring the SQL generated
by entity beans.

There are no code changes required to your
application, and setup is very easy.  There are
explicit instructions for installing under Orion.

 -Original Message-
 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED]]On Behalf Of Alberto
 Vilches
 Sent: Wednesday, October 24, 2001 10:18 AM
 To: Orion-Interest
 Subject: SQL monitoring
 
 
 Hello Orion-Interest,
 
   Anybody knows how to force Orion to show to console all the sql 
 generated by
   the EJB?
   Thanks.
 
 -- 
 Best regards,
  Alberto  mailto:[EMAIL PROTECTED]
 
 




RE: Can't get 2nd web module's servlet-map to register

2001-10-23 Thread Curt Smith

An interesting requirement of J2EE is that external clients
need to run in current working directory where there's
a subdirectory and file of: META-INF/application-client.xml

This file has familiar syntax of declaring the beans you'll
bind to, resources and env vars.  You'll need to declare your
resource there.

good luck,

curt


 Hi All,
   I have created my own DBPool on Orion. I have a startUp class also
 to bind the DBPool object using JNDI. But when I start the orion
 server the
 following is the error I've got :

 javax.naming.NamingException: META-INF/application-client.xml resource not
 found
  (see J2EE spec, application-client chapter for requirements and format of
 the f
 ile)
 at
 com.evermind.server.ApplicationClientInitialContextFactory.getInitial
 Context(Unknown Source)
 at
 javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6
 68)
 at
 javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:246
 )
 at javax.naming.InitialContext.init(InitialContext.java:222)
 at javax.naming.InitialContext.init(InitialContext.java:198)

   And the code in my startup class to initialize the DBPool is:

 try{
   Hashtable env = new Hashtable();
   env.put(Context.INITIAL_CONTEXT_FACTORY,);
   env.put(Context.PROVIDER_URL,ormi://localhost);
   Context ctx = new InitialContext(env);
   //My DBPool
   DBPool nPool = new DBPool();
   ctx.bind(DBPool,nPool);
 } catch (Exception e){
   e.printStackTrace();
 }

   Any suggestion?

 Thanks in advance
 Derek

 __
 This transmission and the information it contains including any
 attachment, is confidential and may be subject to legal
 privilege. If you are not the intended recipient, you must not
 peruse, use, disseminate, disclose or copy this transmission. If
 you have received this transmission (or any copy) in error,
 please notify us immediately by reply e-mail to
 [EMAIL PROTECTED] Please delete the original
 transmission(including any attachment) and its contents and
 destroy or return to us any hard copy.

 Please note that any electronically transmitted material that
 purports to commit Sun Hung Kai  Co. Ltd., or any of its
 subsidiaries or associates, to any obligation or in any other way
 whatsoever, unless subsequently confirmed by  fax or letter
 signed (in either case) by our duly authorized officer(s) may not
 be relied on. Material transmitted to you should also be checked
 by reference to the hard copy of the material printed directly by us.







RE: what the? ejbStore gets called last???

2001-10-23 Thread Curt Smith



1. loadX

  2. loadX == this gets the 
  old copy of X, not the new one since Orion deferred my call to 
  ejbStore
  3. store.
  
Speaking of out of sequence ejbStore()'s, I have a question 
regarding thrown checked exceptions
from ejbStore/ejbLoad in my BMP 
system??

And if I throw a subclass of RuntimeException, which causes a 
trans roll back, will the only
indication of such to my business method be a 
RemoteException?

My style of rowversion and stale update detection is giving 
me fits.

I'm suspecting that defering stale row update to a 
triggerwon't work. I'm believing 
that
I'll have to detect recordVersion miss-match in my business method 
from bean state
andpassed in valueobject values VSletting the db 
trigger detect stale updates?

Thanks,

curt


Can't get 2nd web module's servlet-map to register

2001-10-22 Thread Curt Smith

Hi,

I'm certain everyone has figured out a good way to configure
a multi-web module application??  I'm guessing that any large
app will want to be broken up in smaller units??  I can't get
my best guess to work.

I can't get my 2nd through Nth web module to have requests directed
to the registered servlet for that URL in that module's web.xml...

I have an exploaded deployment tree and one application.xml.

application
  module
ejbejb/ejb
  /module
  module
ejb../otf/ejb/ejb
  /module

  module^
webweb-uriwebtest/web-uri/web
  /module
  module^M
webweb-uri../otf/web/web-uri/web^M
  /module
/application

In each of webtest and ../otf/web I have WEB-INF/web.xml and
declare different servlet-mapping as in:

url-pattern/common/*/url-pattern

url-pattern/otf/*/url-pattern

In orion's server.xml and default-web-site.xml I have:

server.xml: application name=JSCRIBE-COMMON
path=D:\JScribe\deploy\test/
   this points to the above application.xml

default-web-sites.xml:

web-app application=JSCRIBE-COMMON   name=webtest
root=/jscribe-common shared=true /
web-app application=JSCRIBE-COMMON   name=../otf/web
root=/jscribe-otf shared=true /


So in theory when I hit URL:  http://myhost/jscribe-otf/otf/myURL  this
request should be directed
to the servlet registered in ../otf/web

I see that servlet's .init() method called but never doGet/doPost  on a URL
like the
above.

Any thoughts on fixing my DD's or examples of your prefered approach?

Thanks!

curt

Curt Smith
[EMAIL PROTECTED]
(w) 404-463-0973
(h) 404-294-6686





RE: Orion and EJB2.0 (EJB QL)

2001-10-17 Thread Curt Smith


 Is there any information available when Orion will support EJB2.0 
 and EJB QL

My thoughts on CMP vs BMP:
On my project I went with BMP + DAO patterns + business deligates
at the client tier that deligate reads to the much more efficient
DAO's (direct access to the DB) and updates to transactional 
components (entities mediated by session beans).

With CMP you don't have the higher performance choice at the
client business deligate level to go directly to the DB via
DAO's, all reads have to go through the transactional tier
(for no good reason except to boost the stock of your appserver
and hardware vendors).

My personal opinion about CMP, that I'd like to hear other's 
experience on is that you'll spend almost as much time developing and
debugging QL as you would DAO+SQL.  You'll loose the much higher
performance direct access to the DB for read operations.  Given
that most web site pages are doing read, (display of catalogue
pages) use of CMP for reads through entities makes no sense unless
a slow web site is desired.

Any thoughts?

thanks,  curt






Looking for tips on Oracle SQLExceptions

2001-10-16 Thread Curt Smith
Title: CMT and datasources



Sorry 
for an off topic question, but this issue is a problem for 
all
who 
are developing BMP:

I'm 
sure everyone who's written JDBC wishes that SQLException
provided more info about the cause of the exception or 
that DB vendors
bothered to have a hierarchial error number scheme so 
that 

sqle.getErrorCode()

was 
actually set by the vendor or was a number range or something 
that
you 
could determine if it was a column constraint violation or socket 
error
or 
database crashed etc .

Any 
helps for Oracle exceptions these days? Is use of the 9i oci8 or 
thin
driver 
offering any help to this problem?? Oracle URLs for 
helps?

thanks,

curt



RE: Syntax of distributable/ tag?

2001-10-12 Thread Curt Smith




 
distributable / should be placed after 
the display name. What errors are you getting? All session context variables 
need to be serielizable  is this the error you are getting?

I've read on this list 
of folks configuring a commercial clustered architecture of 2 instances of 
Orion
on a box (island) and 2 
boxes. I'm headed the same 
direction.

Is there an example of 
the DD's to do this on one of the orion / support sites? This would 
be very
helpful and of little 
effort for someone to contribute their DD's zipped for folks to reverse 
engineer?

Thanks to a great 
support list,

curt


RE: Synchronized session bean?

2001-10-11 Thread Curt Smith


  Simply put if there's $5 left in the bank, you wouldn't want to have
  a user withdraw $5 with two different web browsers if they hit
  submit at the same time... so we kinda want it to be like there's
  only one teller window, and the servlets have to wait their
  turn.

A poster already mentioned that simplistic solutions might not work
in a clustered environment.  I agree that designs that work due
to timing or happen stance that may not remain constant are weak 
designs bound to have problems in deployment.

This problem is the the classic stale update scenario.  Multiple
clients show $5 available to with draw.  They all hit submit
at once.  How to guard against an over draft in a robust and 
repeatable in all scenarios way??

The most offered solution that I've heard and I've implemented uses
optimistic concurrancy guarded with a row version number;

- add a version number or modification date to your data base tables.
  I use a sequence number that trigger auto-increaments on update.

- Your Model class (represents a data base table row) returned by 
  DAO's and Entities include the sequence number.

- Your presentation tier has a reference of the model (including the 
  row version number)  and all display $5 and internally held in
  the session is an instance of the Model used to generate the 
  dynamic data by your View (MVC) component.

- All users hit submit.

- The Controller (MVC) processing this event fetches the Model from
  the session and calls the setter to modify withdraw ammount, passes
  this Model to the Business Deligate to access your transactional layer
  (mediated by a Session bean calling Entities).

- The Model instance is serialized and passed as an argument to the
  layers of business components down to the Entity responsible for
  updating the AccountBalance table row for this account.

- I used BMP and DAO objects to package the SQL logic.  My DAO fetches
  the sequence number from the Model and account new balance from the
  model and builds the SQL prepared statement:

  UPDATE account set balance = ? where column_version_num = ? ;

  I call stment.setString (1, model.getNewBalance());
 stment.setString (2, model.getVersionNumber());

  If I get a SQLException on this update, then I know that someone else
  beat me to the $5.

  The key concept is the WHERE clause will only update the row IFF
  the sequence number has not been changed by someone else (meaning
  I had stale data).


This will work in clustered environments at all times and does not
depend on synchronized business delegate methods or any other design
that is likely to be defeated by appserver servlet or object pooling
or use of multiple VMs to host your application. 

Good luck,

curt






I've screwed up a component DD???? NamingException: Cannot lookup java:comp/env attributes, not in a valid component

2001-10-03 Thread Curt Smith



I've 
got two apps deployed as expaned directories. XML files are similar since 
they're 
similar apps.

But 
one does not allow any context lookups and one does? 
orionconsole can't
access 
the context and EJB's in the broken app but can in the other. It gets 
these
naming 
exceptions in the orion console log.

What 
could be off in my deployment descriptors ???

Thanks!!

curt


javax.naming.NamingException: Cannot 
lookup java:comp/env attributes, not in a valid 
component at 
com.evermind.server.Application.getEnvironmentContext(Application.java:1669) 
at 
com.evermind.server.ApplicationContext.lookup(ApplicationContext.java:104) 
at 
com.evermind.server.ApplicationContext.lookup(ApplicationContext.java:63) 
at 
javax.naming.InitialContext.lookup(InitialContext.java:350) 
at 
gov.ga.gdc.bm.security.dao.ValidateLoginManager.getDatasource(ValidateLoginManager.java:365) 
at 
gov.ga.gdc.bm.security.dao.ValidateLoginManager.getDBConnection(ValidateLoginManager.java:400) 
at 
gov.ga.gdc.bm.security.dao.ValidateLoginManager.checkPassword(ValidateLoginManager.java:227) 
at 
gov.ga.gdc.bm.security.dao.ValidateLoginManager$UserWrapper.authenticate(ValidateLoginManager.java:305) 
at 
com.evermind.server.rmi.RMIConnection.run(RMIConnection.java:346) 
at 
com.evermind.util.ThreadPoolThread.run(ThreadPoolThread.java:64)


RE: orion 1.3.8 on linux - and Memory leaks in general

2001-10-02 Thread Curt Smith

 3)Leaks,leaks,leaks. Yes there are leaks in Orion. We've run into 
 a very nasty one that no one seems to know why it happens. It's 
 got to do with JMS.
 For some reason Property objects don't get cleaned up. As such, 
 memory usage will keep on going. We are trying one way of dealing 
 with this: usrin the -Incgc option with the JVM (incremental 
 garbage collector).

passing on some personal experiences and thoughts I've had with \
leaks in what appears to be correct java;

The nature of heap managers has always allowed for perfect and 
correct java to fragment the heap and cause memory growth.  No
amount of GC will fix some dynamics if the timing of the new this()
is is interleaved with that.finalize() and gc() doesn't create
enough contiguous space for the next new somemore().  Java 2's
smarter gc() did go along way to reducing the heap fragmentation
potential, I believe and have observed.

For some applications that experience intermittant leaks were the
factors are load and use case interactions, the only fix is to
re-think your object creation and gc()'ing.  The solutions that
worked for me (last hope and desparation) was the general 
strategy of object pooling (re-use and not destruction).

I.E. most objects have a MyClass.clear() and it's ready for re-use.
By reducing the amount of load on the heap, I've fixed or reduced
leakage to tolerable levels...  Yes it does make sense that 
more frequent increamental gc()ing might reduce the orion/JMS
problem from my obervations too...

As the previous poster said;  good luck!

A thought on Linux VM threading and process creation;
The Linux kernel does not have the concept of a light weight thread/process
(LWP) as does Solaris and win32.  This means that all VM threads
are mapped to Linux processes which are more effort for the Linux
kernel to manage due to larger kernel data structures and scheduler
effort to task switch a full task as apposed to a LWP in Solaris or
win32.  Until Linux addes this more efficient structure into the
kernel we'll see somewhat lower perfs for java apps on Linux
vs Solaris x86 or win32 on the same HW.   The design of the Linux
VM in no way causes the runaway tasks or task memory growth as was
observed.  A java Thread spinning or new yetMoreObjects() is likely caused
by java program issues and not the Linux VM or linux kernel... IMHO. :)

curt

J2EE / EJB Architect
Curt Smith
[EMAIL PROTECTED]
(w) 404-463-0973
(h) 404-294-6686 
 winmail.dat


Orion caches http responses and never hits the jsp??

2001-09-27 Thread Curt Smith

I had marveled at Orion's great JSP performance stats
vs WLS and others.

While pulling my hair out debugging my MVC web tier (type 2)
I noticed that when my request was the same (same values on
a submit page) the jsp was never hit, where if I always changed
my form values it would proceed to hit my MVC controller component
and thus excersize my machinery.

For static pages this is a wonderful feature. 

For debugging and dynamic content and scenarios this is either
agravating for debugging or plain wrong if my MVC will generate
different response for the same request dependant on context that
the Orion cache can't know about.

How do I turn off this cache behavior?


Very nice J2EE container Orion!

thanks,

curt





Dependant Entity uses DAO: shared Connection with all DAO's?

2001-09-11 Thread Curt Smith

Just re-validating a design requirement for BMP that I think
I read somewhere:

Dependant objects behind an Entity that uses DAOs for each
parent and child objects.

- for container managed transactions to work, must all DAOs
  use the same Connection?

I.E.

myBeanMethod (,,,)
{
Connection con = null;

try {
// conn pool managed by J2EE container
// and data-sources.xml

Connection con = getDBcon();

doDAOforTableA ( ,,, con);

doDAOforTableB (,,, con);

} finally {
freeDBcon (con);
}
}

Thanks,

curt




RE: Shared SB reference in Web tier business delegate??

2001-09-04 Thread Curt Smith

I didn't clearly state my architectural question:

What's the view on sharing a single remote SB interface among
all servlet threads?  I.E. a single Business Delegate in the 
ServletContext (as apposed to bloating out the Session).

I've not read clear EJB spec / book statements regarding sharing SB or 
Entity remote interfaces?

For SB's this should be perfectly ok since the container delagates
methods to bean instances, it should not mater whether it's via a 
single remote interface or separate?

Threaded access to a single Entity might be a problem if reentrant
is set to false.  I would still believe that the container should
simply queue methods against the Entity in that case.

Thanks for you opinions on the shared reference issue.

curt


  I'm concerned about sharing a single SB remote interface amoung all 
  sessions (Threads)???
 
 Why not let the container manage the actual number of instances created?
 That would lead to 3000 proxy instances, but just a handful of SLSB.
 
  
  Of course SSB remote interfaces will need to be tied to that session!!
 
 I can't quite follow you here. Do you meaqn the http session?
 
  
  What about the few Entities that might be accessed from the web tier?
  reentrant vs not reentrant Entities??
 
 Entities that are reentrant, by the EJB 1.1 spec (section 
 9.1.12), are those
 that can be called in a loopback WITHIN the same
 transaction. Different transactional contexts calling the same Entity(by
 this I mean an entity with equal PK) are not reentrant calls. Basically,
 this allows for loopbacks in a call thread, but its use is discouraged by
 the spec.
 
  
  I wish the EJB spec was clearer about reentrancy of the remote
  interface or maybe someone can shed some light??
 
 Again, check out the same section on the spec; transactional context
 (sometimes called activity) plays an important role in 
 determining if a call
 is reentrant.
  
  Thanks alot to the orion mail list.
  
  curt
  
  
  Curt Smith
  [EMAIL PROTECTED]
  (w) 404-463-0973
  (h) 404-294-6686 
  




RE: Additional invocations to the UserManager

2001-09-03 Thread Curt Smith

I bounced the client, deleted cache/cookies and still saw the auto-login
behavior on every request to my UserManager without seeing the login
dialogue
the 2nd--Nth time.  So how could the client be silently supplying the
user/pass on every request???  Still looks like the container is calling
UserManager with it's cached copy of user/passwd

I could have run my client through a logging proxy to tattle-tail whether
the container was issuing an HTTP challenge on every get/post or not??

Given that I bounced my client and deleted cookies/cache I'm still
mystified about HTTP challenge issues???   Regardless I've moved on to
FORM authentication and folks on this list find value in the current HTTP
challenge behavior for their development cycle not pestering them for
re-login  :-/

curt


Nope. This is browser, not orion behavior. It complies to the HTTP specs.



 I saw this too and went to FORM authentication and don't see this
 anymore.

 I still use UserManager to receive the user/passwd from the FORM
 via the Container, but I don't see the UserManager calls on every
 request.

 Based on this, I feel it's a bug in orion that BASIC behaves this
 way.

 curt






RE: Additional invocations to the UserManager

2001-09-01 Thread Curt Smith

I saw this too and went to FORM authentication and don't see this
anymore.

I still use UserManager to receive the user/passwd from the FORM
via the Container, but I don't see the UserManager calls on every
request.

Based on this, I feel it's a bug in orion that BASIC behaves this
way.

curt


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]On Behalf Of Trujillo, Kris
Sent: Friday, August 31, 2001 6:11 PM
To: Orion-Interest
Subject: Additional invocations to the UserManager



I have written a custom UserManager and have setup security-constraints
against several JSPs in my application...everything works great..almost.
I'm noticing that after the user has successfully been authenticated that my
UserManager is being recalled for every page request made by the user.  The
difference being that the user is not reprompted to enter a username and
password.  The problem with this is that it causes a lot of additional
overhead because the user is reauthenticated and has the group checking
revalidated for every request.  Is it possible to setup Orion so it won't
behave this way?  It seems like once the user has been authenticated once
that they should not be reauthenticated until their session has expired.

Thanks





Shared SB reference in Web tier business delegate??

2001-08-31 Thread Curt Smith

Greetings,

My app is a thick client replacement with J2EE web-ified functionality
where 3000+ clients will login and stay logged in all day.

I'm wanting to reduce the number of session objects as a result of so
many concurrent sessions.  I plan on keeping a per session business
deligate manager, but make the DAO instances static thus shared amoung
all sessions since my DAO's are re-entrant.

I'm concerned about sharing a single SB remote interface amoung all 
sessions (Threads)???

Of course SSB remote interfaces will need to be tied to that session!!

What about the few Entities that might be accessed from the web tier?
reentrant vs not reentrant Entities??

I wish the EJB spec was clearer about reentrancy of the remote
interface or maybe someone can shed some light??

Thanks alot to the orion mail list.

curt


Curt Smith
[EMAIL PROTECTED]
(w) 404-463-0973
(h) 404-294-6686 




UserManager / BASIC auth; orion caching username/password????

2001-08-28 Thread Curt Smith

I've got a confusing issue that I'm observing:

I'm using BASIC authorization and installed my subclass of AbstractUserManger into
orion-application.xml.

I get the HTTP challeng login dialogue the first time, and get into the protected site
when my um.checkPassword ( user, pw ) returns true.

Problems are:

- After 3 failures I get sent to the 401 screen.   I'd like to loop forever in the
 login dialog.

  ???

- The Security context seems to be cached and survives re-starts of orion  ??

  I see the um.checkPassword () method being called with the successful username
  password in my log4j logs.  Is the container supplying the user/passwd without 
challenging
  client   This works for both IE and NS and I've turned the auto-loggin features 
off for
  IE.

   On one hand this is great for resilience, especially if the session object is 
serialized too.
   I haven't found any files that might be performing this feature though???

   On the down side, I can't force a session / Security Context invalidation to force 
a new
   login for debugging purposes.   Stopping IE / NS and restarting the client even 
jumps
   back into the session without a HTTP challeng ???   I've never seen this before?

Why can't I find how to flush cookies in IE and NS...  ;  but this appears to be 
solely
an orion behavior and not using cookies to persist the Security context???


Anybody have an explanation of what's going on with this appearance of
auto-login behavior via my UserManager.checkPassword() method?

very confused,

curt






-verbosity 10

2001-08-14 Thread Curt Smith

I searched the orion doc for this argument as well as the recently offered

-out file  -err file

Is there a place where these orion cmd line args are at least listed ?

The -verbosity 10 is the type of debug logging switches that would be 
very helpful in seeing what's going on.

BTW, my area of hair pullin has to do with 

 ...   getRequestDispatcher ( somePath.jsp ).forward (request, response);

And getting no logging that the somePath.jsp was not found, just a 500 error.
Very frustrating to debug other than using monkey testing; try all combinations.

:))

curt


 Jason Westra [EMAIL PROTECTED] 08/14/01 09:34AM 
Hi Tom,

Try turning -verbosity 10 in the java -jar orion.jar commandline. 
Orion console output should say something like Binding xyxEJB to
xyzJNDIName and indicating the EJB(s) is deployed.

Jason

--- Tom Jordan [EMAIL PROTECTED] wrote:
 Is there anyway to determine that a set of EJBs that are in an ear
 have been 
 deployed onto that server. I just want to know if an ear that was
 suppose to 
 autodeploy has infact deployed.
 
 Thanks
 Tom
 
 _
 Get your FREE download of MSN Explorer at
 http://explorer.msn.com/intl.asp 
 
 
 
 


__
Do You Yahoo!?
Make international calls for as low as $.04/minute with Yahoo! Messenger
http://phonecard.yahoo.com/ 






error-page and orion needs more debug output

2001-08-08 Thread Curt Smith

I can't get the error page to be processed per my web.xml config.

I have a tag:


  servlet-mapping
servlet-nameOTFwebTierEntryPoint/servlet-name
url-pattern/OTF/*/url-pattern
  /servlet-mapping

  error-page
error-code404/error-code
locationjscribeSysError.jsp/location
  /error-page

  error-page
error-code500/error-code
locationjscribeSysError.jsp/location
  /error-page

  error-page
exception-type-codejava.lang.Throwable/exception-type-code
locationjscribeSysError.jsp/location
  /error-page


When I add the error-page  all exception traces to the browser stop, but
I'm getting null responses instead and no orion logging.

I've tried:

location/OTF/jscribeSysError.jsp/location

No different.

I've set development="true" in oron-web.xml and see that this jsp is being
compiled.  I wittled the jsp down to a dirt simple html only 

html
this is an error
/html

No response sent from orion.

I WISH I COULD TURN ON DEBUG TRACING FOR ORION???

How about anyone else??  This is the most silent application I've ever worked with.

Here's the compiled jsp that is confirming it's dirt simple and is being hit as my 
web.xml
above does work??

Thanks for any thoughts.

curt


---


import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class __jspPage0_jscribeSysError_jsp extends 
com.orionserver.http.OrionHttpJspPage
{

public void _jspService(HttpServletRequest request, HttpServletResponse 
response) throws java.io.IOException, ServletException
{
String _tempString;
Object __tempVar;
response.setContentType("text/html");
HttpSession session;
__jspPage0_jscribeSysError_jsp page = this;
session = request.getSession(true);
PageContext pageContext = 
JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true, 
8192, true);
JspWriter out = pageContext.getOut();
int __tempInt;
try
{

out.write("html\n  head /head\nbody 
bgcolor=\"white\"\n\ncenter\n\nh2JScribe System 
Error/h2\n/center\n\n/body\n/html\n");
}
catch(Exception __jspE2)
{
out.clearBuffer();
pageContext.handlePageException(__jspE2);
}
finally
{
out.close();
JspFactory.getDefaultFactory().releasePageContext(pageContext);
}
}