my dog learned polymorphism*
The moose likes JForum and the fly likes Integration/embedding Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Products » JForum
Bookmark "Integration/embedding" Watch "Integration/embedding" New topic
Author

Integration/embedding

Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
I'd be happy to specify an API, if you were able to implement it. For most of the embedding features, it's trivial - it just needs for there to actually BE a public API that the forum implements (implementation takes almost no time at all, mainly just wrapping the methods etc the forum already has).

Basically, I've been asked this problem so many times, by different teams, that I have a really good idea of what the API between forum and application needs to be, at a minimum. If this Olivier guy has an API to start from, then perhaps you could get him to email me (ceo @ grexengine.com) and I'll talk to him about it?
[originally posted on jforum.net by Anonymous]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
I often get asked for help with finding forum software (typically for games), with the main requirements being:
- fast + efficient (i.e. well-written SQL queries etc)
- open-source (if possible)
- feature-rich (for end-users)
- java (sometimes; usually they don't care, as long at it's fast)
- embeddable

The problem is that last one: Embeddable. I've used tonnes of forums and when it comes to this one issue they are nearly all total crap. Ultra-basic features that are often missing, broken, or simply undocumented:

- API to delegate user-account lookup to an existing system (only an idiot would run a corporate intranet or MMOG off the user-account system that came with the *forum software*)
- API for existing systems to interrogate the forum at any non-trivial level (i.e. rather than just forcing external systems to manually construct complex SQL queries, the forum ought to expose high-level requests as simple method calls... in particular, games like to embed key parts of the forum, perhaps a few major categories, in places like directly into the game-client, or into multiple different parts of the website, etc)
- API to share authenticed-user status (tokens, cookies, etc) with existing systems - either pre-generated externally, or generated by the forum and exported to the external system).

This is the main reason that people keep writing their own forums again and again and again. For instance, one game I worked on had a $1000 licensed forum software that simply was not capable of delegating the user-account lookup to an external system.

The open-source forums that are good in this respect - e.g. support LDAP queries for user-auth - tend to then fall down miserably elsewhere.

I came to look at jforum, and notice that just like all the rest there's no documentation for this aspect. So...could annyone with experience of embedding jforum (or failing to) chip in with some info on this?

And...a simple way to massively increase jforum would simply be to document this and put it on the front page as a major feature. Word would get around quickly: I assure you, most dev teams HATE maintaining forum systems, because you have to keep adding features every quarter and they know they're just re-inventing the wheel constantly. It's exhausting and yet you know it's totally pointless .

PS: I'm actually trying to source a forum (yet again) for a java site at the moment. There's only a couple of weeks to have the software chosen, installed, customized, and ready to run. As it stands, they'll be making *yet another* proprietary crappy forum, simply because there's no other choice
[originally posted on jforum.net by Anonymous]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
Well, what can I say?

I agree with you in too many points, and I can add a lot more of points, but anyway, you already know. Much I will say here you are concerned about, I'm sure.

It isn't simply impossible to find a piece of software that fits completely in the need of everyone. Some systems may fit more, some not. And there is always the problem that, when you find a good one, the code sucks a lot ( hard maitaince, bad written, undocummented, unapproachable developers etc etc ). If the code looks great, you may run without all set of features you think are necessary. I guess JForum is this last kind of forum system. More above.

Simple put, most developers hate to write documentation, specially documentation to end-users ( non technical ). They want to write code code code, not doc doc doc. When you come to open-source projects, this is even worst, since it is written by people in their free time, which so many times go through entire nights, weekends, making the software. And, as you pointed out, there is a contant and incessant ask for new features, improvements, asides the bugs and natural refactorings.

People always want to write their own version os some sofware for two reasons:

1) They think that spending two or three weeks understanding the architecture of some existent program is lost of time. They think that, in 1 month, they'll be able to write a whole new and much better system than one that is being developed for monhts ( or years ).

2) They need to have a project where they can be "project leader", "main developer" and so on. If the software is made in-house, they can say "I made it".

Of course this is stupid, and, along these points can be true sometimes, they are not in the whole other situations.

Talking about JForum now: basically speacking, JForum is developed by me. In the last few monhts I started to receive contribution from other valuable people, who have being helping a lot, and I'm so thankful to them. Also, I can only add new features and make improvements if I receive feedback for end-users. There is no free lunch. I wanted to have jforum out of the "rc" and "betas" for a long time ago, but I just can't, since there is always "one more" feature or improvement that should be done.

Integration to an external authentication system is a very wanted feature, and I know that, in order to JForum be accepted more easily, it should provide an easy and extensible way of integration to other systems. And, here again, I only can do that if I receive feedback.
One developer, Pieter Olivier, made some code that brings to jforum some initial effort of integration to external systems. I also made some people to integrate jforum with they websites, job that required some customization here or there. But it is working, and was painless.

Look JiveForums: it has years of development, and it's used by big companies around the world. It supports clustering, advanced chaching, dedicated support and documentation. But the license costs some thousands of dollars. It is a dream expect to find, in an open source and young forum, a system better or at least equivalent. ( but, sure, there is many open source projects that are much much better than commercial ones ).

Another example: one user, some days ago, asked for DB2 integration. Also, he wanted clustering support and more caching options ( well put, no cache support ). Nice, jforum can have all of this, but only if people help out ( or if some company pay to me to develop jforum full time - which I don't believe that will happen ). I'm trying to make jforum more easy to work with, but, if you go out there and compare the existent choices, you'll see that jforum is very high quality, even when I does not have all "enterprise" features. Yet.

So, basically it that all, for now. I'll be very happy to help with any points that you - or anybody else - would ask for assistance.

Rafael
[originally posted on jforum.net by Rafael Steil]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
i am currently in the same situation as the previous poster. having looked at a number of open source projects, this is a very desirable feature to have.

rafael, would it be possible to at least outline the steps necessary to plugin a custom authentication module (is it JAAS-based, or some custom API?) so that we could estimate the effort required to implement that.

in any case, thank you very much for the software.
[originally posted on jforum.net by ant]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
also, as for the integration in general, the whole JSR168 hype is very well worth considering. there are multiple CMS/portals that keep rolling out their own crippled forums implementations for the lack of one compliant with JSR168 standard. if such forums product did exist, it would become a de-facto drop-in (well, almost) standard for these.

http://java-source.net/open-source/content-managment-systems
http://java-source.net/open-source/portals

[originally posted on jforum.net by ant]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
ok, this is what i found, please let me know if there is more or if these are obsolete:

http://www.coderanch.com/t/574564
http://www.coderanch.com/t/574518


[originally posted on jforum.net by Anonymous]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
Anonymous wrote:ok, this is what i found, please let me know if there is more or if these are obsolete:

http://www.coderanch.com/t/574564


Basically, these steps are still valid. The difference is that configureThreadLocalData is part of jforum's core now. However, "configureThreadLocalData" is not a good name, so I'll be providing also methods like setConnection, setRequest and setResponse, which are more easy to understand and even to call.



Yeah, that is the topic about the "external user" stuff. It is in the core system since RC4, if I'm not wrong. I'll try to contact Pieter.

Rafael
[originally posted on jforum.net by Rafael Steil]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
ant wrote:i am currently in the same situation as the previous poster. having looked at a number of open source projects, this is a very desirable feature to have.

rafael, would it be possible to at least outline the steps necessary to plugin a custom authentication module (is it JAAS-based, or some custom API?) so that we could estimate the effort required to implement that.

in any case, thank you very much for the software.


JAAS was an option some time ago, but for the lack of time, we didnt' made it yet. So far, we have at least four different requests for user managerment:

:arrow: JAAS
:arrow: Servlet Container authorization integration
:arrow: The code made by Pieter, which may fit in some cases
:arrow: LDAP

JForum's code is very good and easy to work with. We need help with this stuff. I have my regular job, as well the other guys who help from time to time. I can see that many people here has a lot of experience in software development and integration, so any help is very appreciated.

I will keep trying to do my best in order to have jforum serving the interests of everyone.

Rafael
[originally posted on jforum.net by Rafael Steil]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
thank you for your help. i will play around with the source code.
[originally posted on jforum.net by ant]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
ant wrote:thank you for your help. i will play around with the source code.


Cool. If you have MSN Messenger or ICQ, you can add me to the contact list.

Also, use the CVS version, since there are many changes since RC5.

Rafael
[originally posted on jforum.net by Rafael Steil]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
I'd be happy to specify an API, if you were able to implement it.


I'll do my best.


For most of the embedding features, it's trivial - it just needs for there to actually BE a public API that the forum implements (implementation takes almost no time at all, mainly just wrapping the methods etc the forum already has).


I see. We can work on that - Actually, I try to keep the code well written and documented most of the time ( I say "most" because there are some lacks here or there, but nothing too bad, anyway ), and I believe in constant refactoring as an helper to improve the code base.


Basically, I've been asked this problem so many times, by different teams, that I have a really good idea of what the API between forum and application needs to be, at a minimum. If this Olivier guy has an API to start from, then perhaps you could get him to email me (ceo @ grexengine.com) and I'll talk to him about it?


I sent you en email. I'll try to contact Pieter and see if he still is interested in helping us.

Thanks for the comments.

Rafael
[originally posted on jforum.net by Rafael Steil]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
Thanks for the pointers!

I have checked out the source and quickly looked at the source code you mention, and hopefully I can make the time to add the features I desire within a few days. If I succeed I'll send you patches -- otherwise I'll just dissappear in shame...

/ Jonas
[originally posted on jforum.net by Anonymous]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
Great!

You can suggest refactorings and etc, since that LoginAuthenticator was just the first try. Ah, you tell jforum which authenticator to use in SystemGlobals.properties, key "login.authenticator"

Rafael
[originally posted on jforum.net by Rafael Steil]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
Since my servlet container is configured with proper security and authentication, I use the HttpServletRequest to figure out which user is loged in in my servlets. Example given:

doGet(HttpServletRequest req ...) {
...
String user = req.getRemoteUser();

Now I'm trying to figure out how to get jforum to do this as well...

Is there already a way for configuring this, or do I need to modify the source code? Are you guy s already doing this work and if so do you have a time estimate or do you need assistance?

regards,
Jonas
[originally posted on jforum.net by Anonymous]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
In the CVS version there is a LoginAuthenticator interface, as an inittial effort to enable better integration to any auth mechanism.

But in all cases you still will have to hack the source to, at least, create the UserSession for the user ( as done in the method checkCookies(), from JForum.java ).

I'm accepting all suggestions and help. Currently I'm focused on other major issues.

Rafael
[originally posted on jforum.net by Rafael Steil]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
Jonas, drop me a private message. I have modified jforum to work with in a single sign on environment. I havent had a chance yet to go back and clean it up properly so Rafael can integrate it into the main codebase, but it could be usefull for you to have a look at.

Dan
[originally posted on jforum.net by campers]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
Jonas wrote: String user = req.getRemoteUser();


Yes, that is the scheme that I too have thought about. Nothing fancy, just let JForum pick up the username, and log in (without asking for the JForum password) if it exists. Should work with most cases.

You could also add the same security code in WEB.XML as in the 'home site' web app. Voil��: single sign-on.

Cheers, Per

[originally posted on jforum.net by per]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
Well, sometimes it's just to easy.

With the code from Dan and a few quick fixes I can verify that the solution works in Jetty with ssl and basic authentication. I'll go about cleaning things up and documenting and then propagate it back.

As an added bonus the whole thing seems to work nicely running with a postgres 8 database on windows xp as backend.

[originally posted on jforum.net by Jonas]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
The last message in this thread was 2 months ago. I've found lots of messages in this forum on this topic, but all seem to require substantial code changes.

I just want to do the following:
When a user arrives at jforum use custom authentication (that I would write) to find who the user is. If the user isn't logged in then I'd send them to my own login page. If they are logged in then in my code I would match up the user's account (using my own cookie) with a JForum user record. If no such record exists then I would call something that creates that record.

All of this would be transparent to the user.

The previous message in this thread makes it sound like there was an easy way to do this. LoginAuthenticator isn't any good because it still requires that that the user log in.

It looks to me like the simplest place to do this is to modify net.jforum.drivers.generic.UserModel. But, it's not obvious to me how to do that cleanly.
[originally posted on jforum.net by Anonymous]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
Well, so far there isn't any progress on this area.

Rafael
[originally posted on jforum.net by Rafael Steil]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
Rafael, did you get a chance to have a look at that patch i sent you a while ago?

Anonymous, send me a private message or email and ill send you the document I wrote up for how I integrated jforum into a single sign on environment.
[originally posted on jforum.net by campers]
Migrated From Jforum.net
Ranch Hand

Joined: Apr 22, 2012
Posts: 17424
I didn't received the email yet.

Rafael
[originally posted on jforum.net by Rafael Steil]
Shweta A Singh
Greenhorn

Joined: Dec 10, 2012
Posts: 3
Anonymous, send me a private message or email and ill send you the document I wrote up for how I integrated jforum into a single sign on environment.


Could you please send me the document with the steps to integrate jforum into a sso env?

Thanks you so much.
Jeanne Boyarsky
internet detective
Marshal

Joined: May 26, 2003
Posts: 30123
    
150

Shweta A Singh wrote:
Anonymous, send me a private message or email and ill send you the document I wrote up for how I integrated jforum into a single sign on environment.


Could you please send me the document with the steps to integrate jforum into a sso env?

Thanks you so much.

Note that the last post was 7 years ago and migrated from another site. It's highly likely the original poster isn't around.


[Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Blogging on Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, OCAJP, OCPJP beta, TOGAF part 1 and part 2
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Integration/embedding
 
Similar Threads
java based discussion forum
Using JForum SSO - a kludger's tale
Connection with an external user database
JINI Technology Why do we require it ? -- For delivering Services - It?
When to not use EJB