You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Mark Lenz <ML...@piercemfg.com> on 2003/04/22 21:04:15 UTC
Storing Files
My web application needs to generate some PDF files, store them, and then
serve them up to a web browser when needed. Would it be better to store
these files in my MySQL database or just use the filesystem?
Mark Lenz
Pierce Manufacturing, Inc.
(920) 832-3523
mlenz@piercemfg.com
The information contained in this electronic mail message is confidential
information and intended only for the use of the individual or entity named
above, and may be privileged. If the reader of this message is not the
intended recipient, you are hereby notified that any dissemination,
distribution or copying of this communication is strictly prohibited. If
you have received this transmission in error, please contact the sender
immediately, delete this material from your computer and destroy all
related paper media. Please note that the documents transmitted are not
intended to be binding until a hard copy has been manually signed by all
parties.
Thank you.
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
Re: Storing Files
Posted by dwightHugget <ja...@concentric.net>.
On Tuesday 22 April 2003 15:04, Mark Lenz wrote:
> My web application needs to generate some PDF files, store them, and then
> serve them up to a web browser when needed. Would it be better to store
> these files in my MySQL database or just use the filesystem?
>
> Mark Lenz
> Pierce Manufacturing, Inc.
> (920) 832-3523
> mlenz@piercemfg.com
>
> The information contained in this electronic mail message is confidential
> information and intended only for the use of the individual or entity named
> above, and may be privileged. If the reader of this message is not the
> intended recipient, you are hereby notified that any dissemination,
> distribution or copying of this communication is strictly prohibited. If
> you have received this transmission in error, please contact the sender
> immediately, delete this material from your computer and destroy all
> related paper media. Please note that the documents transmitted are not
> intended to be binding until a hard copy has been manually signed by all
> parties.
> Thank you.
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
Filesystem. You don't incur the cost of a DBMS connection and SQL and BLOBs
etc.
--
Dwight Hugget
http://www.dmhEnterprise.com
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
Re: precompile and reloadable JSPs - possible?
Posted by Justin Ruthenbeck <ju...@nextengine.com>.
Hmm, interesting question.
I don't see any way that this could be done automatically since Tomcat is
forced (by the separation of Jasper and Tomcat) to treat compiled jsps
strictly as servlets without knowledge that they were conceived as jsps.
If you're trying to avoid the annoyance of compiling jsps on developer
machines, you could hook into Tomcat's code that gets called when users
request non-compiled JSP pages and simulate a user requesting all
pages. This would compile all jsps, but I don't know if this is possible
without barbing the Tomcat source -- would be surprised if it was.
Though this is a bit convoluted, I suppose you could have a filter sitting
in front of all URLs mapped to your jsp that could check for the existence
of a .jsp file in your webapp (a non pre-compiled one, checked via file
I/O). You could play games with the URLs to somehow forward to that jsp
(at which point it would be compiled and run. If the .jsp didn't exist,
you could just forward on to the precompiled "regular" one. This way you
could precompile all your jsps and reference them like normal in your
web.xml, but still be able to place updated versions in your exploded
directory ... seems like this would approximate precompilation and reloadable.
That's admittedly pretty nasty, but it's an idea that you might be able to
improve on. I'd be curious to hear if and how you solve this.
justin
At 12:29 PM 4/22/2003, you wrote:
>hi there,
>is there anyone who has achieved to have precompiled and reloadable JSPs?
>What I want is to be able to precompile JSPs, but also to change them and
>have tomcat recompile them during runtime without reloading the context.
>Currently, when we precompile, Jasper gives us a web.xml fragment that turns
>jsp pages into servlets, hence if the JSP file changes it is ignored.
>
>anyone done this on Tomcat 4.1.24 or Tomcat 4.1.x?
>
>What we did for Tomcat 3.x is that we precompiled the JSP pages into the
>tomcat work directory, we could do something similar for tomcat 4, the only
>pain is that we would have to compile each directory separately because of
>the way that tomcat assigns the package names to the generated servlets.
>
>any thoughts?
>
>Filip
>
> > -----Original Message-----
> > From: Andre E. Bar'yudin [mailto:baryudin@pob.huji.ac.il]
> > Sent: Tuesday, April 22, 2003 12:12 PM
> > To: Tomcat Users List
> > Subject: Re: Storing Files
> >
> >
> > Êâîòèðîíèå Mark Lenz <ML...@piercemfg.com>:
> >
> > >
> > > My web application needs to generate some PDF files, store
> > them, and then
> > > serve them up to a web browser when needed. Would it be better to store
> > > these files in my MySQL database or just use the filesystem?
> >
> > Depends on what you want. If you wish to share the files with
> > other servers and
> > don't want to create shared filesystems, storing PDFs in a
> > database can be an
> > option. The downside is that now you must share the DB server. But
> > performance-wise it's better to store the file on the filesystem
> > directly. Make
> > sure that you don't create any race-conditions.
> >
> > Regards,
> >
> > Andre.
> >
> > --
> > =============================================================
> > Andre E. Bar'yudin
> > Home page: http://www.cs.huji.ac.il/~baryudin/
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> >
> >
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
____________________________________
Justin Ruthenbeck
Software Engineer, NextEngine Inc.
justinr - AT - nextengine DOT com
Confidential
See http://www.nextengine.com/confidentiality.php
____________________________________
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
RE: precompile and reloadable JSPs - possible?
Posted by Filip Hanik <ma...@filip.net>.
thanks for the effort Tim, you missed one little detail
> What I want is to be able to precompile JSPs, but also to change them and
> have tomcat recompile them during runtime without reloading the context.
when you run tomcat in dev mode, it doesn't shut down the webapp, when
compiling a single JSP, that is what I want to achieve
Filip
> -----Original Message-----
> From: Tim Funk [mailto:funkman@joedog.org]
> Sent: Tuesday, April 22, 2003 12:35 PM
> To: Tomcat Users List
> Subject: Re: precompile and reloadable JSPs - possible?
>
>
> <kludge notattempted="true">
> You could have a thing monitor changes. On detecting a change -
> recompile the
> jsp's. Then reload the webapp.
> </kludge>
>
> -Tim
>
> Filip Hanik wrote:
> > hi there,
> > is there anyone who has achieved to have precompiled and
> reloadable JSPs?
> > What I want is to be able to precompile JSPs, but also to
> change them and
> > have tomcat recompile them during runtime without reloading the context.
> > Currently, when we precompile, Jasper gives us a web.xml
> fragment that turns
> > jsp pages into servlets, hence if the JSP file changes it is ignored.
> >
> > anyone done this on Tomcat 4.1.24 or Tomcat 4.1.x?
> >
> > What we did for Tomcat 3.x is that we precompiled the JSP pages into the
> > tomcat work directory, we could do something similar for tomcat
> 4, the only
> > pain is that we would have to compile each directory separately
> because of
> > the way that tomcat assigns the package names to the generated servlets.
> >
> > any thoughts?
> >
> > Filip
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
Re: precompile and reloadable JSPs - possible?
Posted by Tim Funk <fu...@joedog.org>.
<kludge notattempted="true">
You could have a thing monitor changes. On detecting a change - recompile the
jsp's. Then reload the webapp.
</kludge>
-Tim
Filip Hanik wrote:
> hi there,
> is there anyone who has achieved to have precompiled and reloadable JSPs?
> What I want is to be able to precompile JSPs, but also to change them and
> have tomcat recompile them during runtime without reloading the context.
> Currently, when we precompile, Jasper gives us a web.xml fragment that turns
> jsp pages into servlets, hence if the JSP file changes it is ignored.
>
> anyone done this on Tomcat 4.1.24 or Tomcat 4.1.x?
>
> What we did for Tomcat 3.x is that we precompiled the JSP pages into the
> tomcat work directory, we could do something similar for tomcat 4, the only
> pain is that we would have to compile each directory separately because of
> the way that tomcat assigns the package names to the generated servlets.
>
> any thoughts?
>
> Filip
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
RE: precompile and reloadable JSPs - possible?
Posted by Filip Hanik <ma...@filip.net>.
I think Justin has a point.
My original idea was to look into the tomcat source, and the compile the JSP
pages into the work folder just like tomcat does during runtime.
it would just take a little bit longer, and since tomcat might change
between versions, it will be a pain in the booty to upkeep
Filip
> -----Original Message-----
> From: johannes.fiala@fwd.at [mailto:johannes.fiala@fwd.at]
> Sent: Tuesday, April 22, 2003 1:33 PM
> To: Tomcat Users List
> Subject: Re: precompile and reloadable JSPs - possible?
>
>
> Hi Filip,
>
> I asked nearly the same question some weeks ago, but the answer was that
> the WAR cannot be changed during runtime unless the portability of WAR
> files of Tomcat is violated. So it seems you cannot change a WAR file
> during runtime without hurting the J2EE specs.
>
> However, if you find a solution for this, I'd be very interested!
> I think we could change the contents of the work-directory itself, but
> then we would dig into Tomcat's internal management of WAR files....
>
> thx alot
> Johannes
>
>
>
>
> "Filip Hanik" <ma...@filip.net>
> 22.04.2003 21:29
> Please respond to
> "Tomcat Users List" <to...@jakarta.apache.org>
>
>
> To
> "Tomcat Users List" <to...@jakarta.apache.org>
> cc
>
> Subject
> precompile and reloadable JSPs - possible?
>
>
>
>
>
>
> hi there,
> is there anyone who has achieved to have precompiled and reloadable JSPs?
> What I want is to be able to precompile JSPs, but also to change them and
> have tomcat recompile them during runtime without reloading the context.
> Currently, when we precompile, Jasper gives us a web.xml fragment that
> turns
> jsp pages into servlets, hence if the JSP file changes it is ignored.
>
> anyone done this on Tomcat 4.1.24 or Tomcat 4.1.x?
>
> What we did for Tomcat 3.x is that we precompiled the JSP pages into the
> tomcat work directory, we could do something similar for tomcat 4, the
> only
> pain is that we would have to compile each directory separately because of
> the way that tomcat assigns the package names to the generated servlets.
>
> any thoughts?
>
> Filip
>
> > -----Original Message-----
> > From: Andre E. Bar'yudin [mailto:baryudin@pob.huji.ac.il]
> > Sent: Tuesday, April 22, 2003 12:12 PM
> > To: Tomcat Users List
> > Subject: Re: Storing Files
> >
> >
> > Квотироние Mark Lenz <ML...@piercemfg.com>:
> >
> > >
> > > My web application needs to generate some PDF files, store
> > them, and then
> > > serve them up to a web browser when needed. Would it be better to
> store
> > > these files in my MySQL database or just use the filesystem?
> >
> > Depends on what you want. If you wish to share the files with
> > other servers and
> > don't want to create shared filesystems, storing PDFs in a
> > database can be an
> > option. The downside is that now you must share the DB server. But
> > performance-wise it's better to store the file on the filesystem
> > directly. Make
> > sure that you don't create any race-conditions.
> >
> > Regards,
> >
> > Andre.
> >
> > --
> > =============================================================
> > Andre E. Bar'yudin
> > Home page: http://www.cs.huji.ac.il/~baryudin/
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
Re: precompile and reloadable JSPs - possible?
Posted by jo...@fwd.at.
Hi Filip,
I asked nearly the same question some weeks ago, but the answer was that
the WAR cannot be changed during runtime unless the portability of WAR
files of Tomcat is violated. So it seems you cannot change a WAR file
during runtime without hurting the J2EE specs.
However, if you find a solution for this, I'd be very interested!
I think we could change the contents of the work-directory itself, but
then we would dig into Tomcat's internal management of WAR files....
thx alot
Johannes
"Filip Hanik" <ma...@filip.net>
22.04.2003 21:29
Please respond to
"Tomcat Users List" <to...@jakarta.apache.org>
To
"Tomcat Users List" <to...@jakarta.apache.org>
cc
Subject
precompile and reloadable JSPs - possible?
hi there,
is there anyone who has achieved to have precompiled and reloadable JSPs?
What I want is to be able to precompile JSPs, but also to change them and
have tomcat recompile them during runtime without reloading the context.
Currently, when we precompile, Jasper gives us a web.xml fragment that
turns
jsp pages into servlets, hence if the JSP file changes it is ignored.
anyone done this on Tomcat 4.1.24 or Tomcat 4.1.x?
What we did for Tomcat 3.x is that we precompiled the JSP pages into the
tomcat work directory, we could do something similar for tomcat 4, the
only
pain is that we would have to compile each directory separately because of
the way that tomcat assigns the package names to the generated servlets.
any thoughts?
Filip
> -----Original Message-----
> From: Andre E. Bar'yudin [mailto:baryudin@pob.huji.ac.il]
> Sent: Tuesday, April 22, 2003 12:12 PM
> To: Tomcat Users List
> Subject: Re: Storing Files
>
>
> Квотироние Mark Lenz <ML...@piercemfg.com>:
>
> >
> > My web application needs to generate some PDF files, store
> them, and then
> > serve them up to a web browser when needed. Would it be better to
store
> > these files in my MySQL database or just use the filesystem?
>
> Depends on what you want. If you wish to share the files with
> other servers and
> don't want to create shared filesystems, storing PDFs in a
> database can be an
> option. The downside is that now you must share the DB server. But
> performance-wise it's better to store the file on the filesystem
> directly. Make
> sure that you don't create any race-conditions.
>
> Regards,
>
> Andre.
>
> --
> =============================================================
> Andre E. Bar'yudin
> Home page: http://www.cs.huji.ac.il/~baryudin/
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
precompile and reloadable JSPs - possible?
Posted by Filip Hanik <ma...@filip.net>.
hi there,
is there anyone who has achieved to have precompiled and reloadable JSPs?
What I want is to be able to precompile JSPs, but also to change them and
have tomcat recompile them during runtime without reloading the context.
Currently, when we precompile, Jasper gives us a web.xml fragment that turns
jsp pages into servlets, hence if the JSP file changes it is ignored.
anyone done this on Tomcat 4.1.24 or Tomcat 4.1.x?
What we did for Tomcat 3.x is that we precompiled the JSP pages into the
tomcat work directory, we could do something similar for tomcat 4, the only
pain is that we would have to compile each directory separately because of
the way that tomcat assigns the package names to the generated servlets.
any thoughts?
Filip
> -----Original Message-----
> From: Andre E. Bar'yudin [mailto:baryudin@pob.huji.ac.il]
> Sent: Tuesday, April 22, 2003 12:12 PM
> To: Tomcat Users List
> Subject: Re: Storing Files
>
>
> Квотироние Mark Lenz <ML...@piercemfg.com>:
>
> >
> > My web application needs to generate some PDF files, store
> them, and then
> > serve them up to a web browser when needed. Would it be better to store
> > these files in my MySQL database or just use the filesystem?
>
> Depends on what you want. If you wish to share the files with
> other servers and
> don't want to create shared filesystems, storing PDFs in a
> database can be an
> option. The downside is that now you must share the DB server. But
> performance-wise it's better to store the file on the filesystem
> directly. Make
> sure that you don't create any race-conditions.
>
> Regards,
>
> Andre.
>
> --
> =============================================================
> Andre E. Bar'yudin
> Home page: http://www.cs.huji.ac.il/~baryudin/
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
Re: Storing Files
Posted by "Andre E. Bar'yudin" <ba...@pob.huji.ac.il>.
Квотироние Mark Lenz <ML...@piercemfg.com>:
>
> My web application needs to generate some PDF files, store them, and then
> serve them up to a web browser when needed. Would it be better to store
> these files in my MySQL database or just use the filesystem?
Depends on what you want. If you wish to share the files with other servers and
don't want to create shared filesystems, storing PDFs in a database can be an
option. The downside is that now you must share the DB server. But
performance-wise it's better to store the file on the filesystem directly. Make
sure that you don't create any race-conditions.
Regards,
Andre.
--
=============================================================
Andre E. Bar'yudin
Home page: http://www.cs.huji.ac.il/~baryudin/
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
Re: Storing Files
Posted by Tim Funk <fu...@joedog.org>.
Can you just generate them on the fly and not store them?
If you wish to store them in a file system, do the pdfs need protected? Can
you let apache do that for you? Or you can create a controller (or filter) to
protect the pdfs too.
A database will work too. But is probably the hardest.
-Tim
Mark Lenz wrote:
> My web application needs to generate some PDF files, store them, and then
> serve them up to a web browser when needed. Would it be better to store
> these files in my MySQL database or just use the filesystem?
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
RE: Storing Files
Posted by George Sexton <gs...@mhsoftware.com>.
I have actually given this some thought. I agree that file is the right
answer.
The file name should be generated and just be something like a number
"00001", "00002", etc. Experience has shown that someone is really bound to
think up something cute they can put in a file name that will cause
problems, and perhaps bypass security. To be safe, don't use a user supplied
name for something that gets written to the file system. (upload a file
named ../../WEB-INF/web.xml ... you get the idea).
You should probably calculate and store a MD5 hash of the file and save it
with the pointer to the file in the database. This will allow you to detect
if files have been altered.
Finally, you should store the file name and mime-type in the database.
In the web page, I would write the links with the file ID (00001), but add
the file extension associated with the mime type. I would create one servlet
that would service all requests for files, and map it to a path (/bin/). The
file ID would be the last part of the request URI. About the only other
thing to do is to set the content type using the mime-type capture when the
file is saved.
It may be worthy to use randomly assigned integers as the file ID, rather
than the assigned value so that users cannot just keep retrieving file after
file by incrementing the ID.
-----Original Message-----
From: mike jackson [mailto:mjackson@cdi-hq.com]
Sent: Tuesday, April 22, 2003 3:46 PM
To: 'Tomcat Users List'
Subject: RE: Storing Files
Filesystem probably. Database could store a pointer to the file if you
needed to, but if you don't need the pointer you can have the webserver
serve the pdf's without having to code anything.
--mikej
-=------
mike jackson
mjackson@cdi-hq.com
> -----Original Message-----
> From: Mark Lenz [mailto:MLenz@piercemfg.com]
> Sent: Tuesday, April 22, 2003 11:04 AM
> To: tomcat-user@jakarta.apache.org
> Subject: Storing Files
>
>
> My web application needs to generate some PDF files, store them, and
then
> serve them up to a web browser when needed. Would it be better to
store
> these files in my MySQL database or just use the filesystem?
>
> Mark Lenz
> Pierce Manufacturing, Inc.
> (920) 832-3523
> mlenz@piercemfg.com
>
> The information contained in this electronic mail message is
confidential
> information and intended only for the use of the individual or entity
> named
> above, and may be privileged. If the reader of this message is not the
> intended recipient, you are hereby notified that any dissemination,
> distribution or copying of this communication is strictly prohibited.
If
> you have received this transmission in error, please contact the
sender
> immediately, delete this material from your computer and destroy all
> related paper media. Please note that the documents transmitted are
not
> intended to be binding until a hard copy has been manually signed by
all
> parties.
> Thank you.
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
RE: Storing Files
Posted by mike jackson <mj...@cdi-hq.com>.
Filesystem probably. Database could store a pointer to the file if you
needed to, but if you don't need the pointer you can have the webserver
serve the pdf's without having to code anything.
--mikej
-=------
mike jackson
mjackson@cdi-hq.com
> -----Original Message-----
> From: Mark Lenz [mailto:MLenz@piercemfg.com]
> Sent: Tuesday, April 22, 2003 11:04 AM
> To: tomcat-user@jakarta.apache.org
> Subject: Storing Files
>
>
> My web application needs to generate some PDF files, store them, and
then
> serve them up to a web browser when needed. Would it be better to
store
> these files in my MySQL database or just use the filesystem?
>
> Mark Lenz
> Pierce Manufacturing, Inc.
> (920) 832-3523
> mlenz@piercemfg.com
>
> The information contained in this electronic mail message is
confidential
> information and intended only for the use of the individual or entity
> named
> above, and may be privileged. If the reader of this message is not the
> intended recipient, you are hereby notified that any dissemination,
> distribution or copying of this communication is strictly prohibited.
If
> you have received this transmission in error, please contact the
sender
> immediately, delete this material from your computer and destroy all
> related paper media. Please note that the documents transmitted are
not
> intended to be binding until a hard copy has been manually signed by
all
> parties.
> Thank you.
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org