Servlet Based Wiki

See also: JavaWikiEngines

Take a look at ChikiWiki for an example of a J2EE wiki -- GhootEmaho (no activity since 2002...)

I'm having a go at building a limited WikiWikiClone in Java using JavaServlets. I say limited, because I just want to mimic c2, in a language I understand, on my local server. I don't have any ambitions to EmbraceAndExtend as some other CloneWriters? are doing :-) (no offence Austin!)

I have been speaking to AustinDavid, who is working on a WikiWikiClone called Kwiki, and WardCunningham, (who I'm sure needs no introduction). Ward, it seems, has a vague urge to give a ServletBasedWiki a try.

Ward has written a WikiTranslator in Java ( which hopefully will mean I don't have to worry about converting WikiMarkupLanguage to HTML (once Ward releases the translator).

I thought I'd take this discussion onto Wiki since I'm sure many folks out there will have "Things To Say".

-- AlanFrancis

Also, check out the JikiJikiJava.

-- StephenPetschulat

What persistence options are people using for Wiki in Java? Doesn't this present some difficult choices, compared with the imperfect but convenient dbm access available in Perl?

In particular, I'm concerned with these issues:

What choices have you made and why?


UPDATE: -- AlanFrancis

Well it kinda goes. My wiki (also called jiki - how many names are there ? :) supports automatic WikiWord detection, the 4*hyphen - <HR> conversion, links for existing pages, ? for non-existing pages. I have a Recent Changes and basic title search. THere's no complex formatting (lists, <pre> bold italic etc).

This is a Prototype. A SpikeSolution and as such it's pretty crafty.

Pages are saved use standard Serialization which means they aren't in a human-readable form and that could mean versioning problems. I plan to modify this so the pages are stored either as raw text (with RFC-822 headers for stuff like last-edited-date and last-edited-by) or.... the ubiquitous XML.

Next plan is to rebuild using a slightly more modular architecture (thanks Austin!) and I also plan to use JavaServerPages for the presentation engine.

The servlet will do the db querying, save the results to a JavaBean and then supply the client with a JSP for browse, edit, search or post. The JSP has access to the bean and can then extract the info it needs and format the page accordingly.

I may even be able to do the WikiTranslation? inplace in the JSP :-) -- AlanFrancis

JSP seems a bit heavyweight to me. I have had good experiences with WebMacro ( which also allows introspection-based access to data from web pages, but is (to me, at least) a lot nicer. -- FrankCarver

I reckon that depends on what you do with them... :-) My JSPs simply format the text that I would pass in as a bean. (I gave up on the idea of WikiTranslation? in place) :-). Ward, your (admittedly beta) WikiTranslator worked wonders and the only thing it doesn't do is preformatted stuff.

Also, I'd like to keep this compiling "out-of-the-box" so no dependence on outside libraries... -- AlanFrancis

Also consider a different SpikeSolution, in the form of FrikiServlet. It's not quite a WikiWikiClone, but it does a similar job. I'm hoping to trim it down by using WebMacro sometime soon. -- FrankCarver

Update: There is now a new version of Friki which implements the full markup and doesn't use any heavyweight libraries (the JDK1.4 download is just 54k, which includes a ready-to-run war file with example pages and 20k of configuration documents). You don't need a full-power template engine like WebMacro, you certainly don't need JSP. See FrikiServlet for more information.

Alan and I independently started similar projects, and we've both become stuck at various stages due to the annoying pressures of other work. Our designs are similar: servlets for interacting with the page store and similar stuff, Ward's JavaCC translator for actually converting wiki-format to HTML, and JSPs for the rest of the page formatting. My design is geared toward HTML output with multiple page source formats (a la AtisWiki), whereas Alan's assumes wiki as the source format and allows for non-HTML interfaces. (In retrospect, I like Alan's plans better, I think.)

One difference is that I'm trying to gear mine to use some of the new servlet and JSP features, especially the "Web Application" support that can make it very easy to install and customize the system (including look-and-feel customization and "branding"). It should also be easy to support multiple different wikis on the same web server. This means that, at least in the short term, my ServletBasedWiki will not be as widely useful as Alan's, because servers won't support all of the new features right away.

Alan's is also farther along than mine (I have page display and editing working, but no search and no recent changes yet). (I've seen some of Alan's stuff, but he hasn't seen mine, because I ... um ... keep forgetting to send it to him.) We have very similar goals, but I'm continuing to work on my own for two reasons: it's a project to learn more about servlet and JSP development, and I'd like to replace our internal wiki that we use for our consulting practice (we're currently using AtisWiki). -- GlennVanderburg


In between my real work (see XpEdinburgh) I've managed to completely overhaul what was called Jiki (and worked, just) into what I've just called wiki.

Details moved to AlansWikiEngine? :-)

[details of public access removed - my site is no more.... -- AlanFrancis]

Alan and I have continued to work in parallel on our own projects, and lately I've had more time than he has. My wiki (tentatively called Siki) is functional now, although it doesn't have search facilities. The primary incentive has been to replace the software for our consulting group's internal wiki (currently running AtisWiki) and we plan to cut over early next week.

I spent most of last week learning AntlrTranslatorGenerator and writing a JavaWikiTranslator? (hop over to that page for more info).

Very soon after Siki begins actively supporting users, I plan to release the code under some variety of open-source license. Until that time, suggestions for better names will be gratefully accepted. :-)

-- GlennVanderburg, 16 March 2000

JspWiki is nice candidate for servlet wiki. It is very easy to set up; it only took me 5 minutes. It has different kinds of persistence for pages: file base, or RCS to get versions, or CVS based(in development.) The performance is great when built-in caching is used. It supports tables, bullets, heading, WikiName, etc. -- SeshKumar
Found a Struts based early Wiki here.

-- RandyPond?

SnipSnap is a Java servlet/JSP-based wikilog, very similar to VaNilla, and under active development. SnipSnap formed RaDeox as a LGPL rendering engine sub project.

-- Added by GoofRider on 2002-10-24

View edit of April 10, 2012 or FindPage with title or text search