Was JavaMail installed in /Library/Java/Extensions? IIRC, it
searches in classpath order for something named Session.
In any case, your code makes a lot more sense than what WO normally
does. :-)
Chuck
On Oct 25, 2007, at 3:59 PM, Kieran Kelleher wrote:
> FYI,
>
> Recently, a developer on one team I work on had this exact problem
> in Deployment. App ran fine in development from Eclipse, but in
> deployment the app was trying to use java mail Session instead of
> app Session. This workaround was necessary to fix it.
>
> Regards, Kieran
>
> On Oct 25, 2007, at 5:34 PM, Chuck Hill wrote:
>
>>
>> On Oct 25, 2007, at 11:13 AM, Fred Shurtleff wrote:
>>
>>> This did the trick - the app now runs ok. Thank you very much.
>>>
>>> But it does raise the question WHY this code is needed when there
>>> is only one Session file in all the projects I have imported into
>>> Eclipse. Seems very odd to me.
>>
>> It is probably a problem with the Eclipse launcher configuration
>> for this project. I am not sure why it would affect just this one.
>>
>>
>> Chuck
>>
>>>
>>> Fred (see further below)
>>>
>>> Kieran Kelleher wrote:
>>>> Just copy/paste this code below into your Application class and
>>>> assuming your Session class is in the same package as your
>>>> Application class, this will solve the WebObjects bad
>>>> implementation for identifying the Session class
>>>>
>>>> private Class _ourSessionClass;
>>>>
>>>> /* (non-Javadoc)
>>>> *..ee com.webobjects.appserver.WOApplication#_sessionClass()
>>>> * WebObjects searches the classpath and uses the first
>>>> class it finds with
>>>> * the name Session ... crazy huh? This ensures that Session
>>>> from the same package as the
>>>> * Application class is used
>>>> */
>>>> ..verride
>>>> protected Class _sessionClass()
>>>> {
>>>> if (_ourSessionClass == null) {
>>>> String ourSessionClassName = null;
>>>> try {
>>>> ourSessionClassName = getClass().getPackage
>>>> ().getName() + ".Session";
>>>> System.out.println("Using " +
>>>> ourSessionClassName + " as the application's Session class.");
>>>> _ourSessionClass = Class.forName
>>>> ( ourSessionClassName );
>>>> } catch ( Exception e ) {
>>>> System.err.println( "What have you done with
>>>> your " + ourSessionClassName + " class?!\n" + e.getStackTrace() );
>>>> }
>>>> } //~ if (_ourSessionClass == null)
>>>> return _ourSessionClass;
>>>> }
>>>>
>>>>
>>>> HTH, Kieran
>>>>
>>>> On Oct 24, 2007, at 12:51 PM, Chuck Hill wrote:
>>>>
>>>>> It sounds like you may have a classpath issue and that the
>>>>> Session class getting loaded is something like
>>>>> java.mail.Session instead of the Session class in this project.
>>>>>
>>>>> Try adding this to the constructor in Main:
>>>>>
>>>>> NSLog.out.appendln("Session class is " + session().getClass
>>>>> ().getName());
>>>>>
>>>>> Chuck
>>>>>
>>> This statement did not report nothing (that is no fixed text nor
>>> the Session name). But I don't know why - perhaps I positioned in
>>> the wrong place (I put it in public Main - right after the super
>>> (context) statement.
>>>>>
>>>>> On Oct 3, 2007, at 9:02 AM, Fred Shurtleff wrote:
>>>>>
>>>>>> Thanks for your suggestions, but unfortunately, deleting
>>>>>> unused projects did NOT have any effect. I deleted all
>>>>>> projects EXCEPT PracticalUtilities, EOJDBCPrototypes, and
>>>>>> PWOExampleApp, which are all companion apps specified in the
>>>>>> PWO Book setup instructions. And furthermore, I checked each
>>>>>> of these projects and there is no Session.java file - so this
>>>>>> leaves only 1 Session file in all of Eclipse - that being in
>>>>>> the Chap4App project.
>>>>>>
>>>>>> Regards the bindings tip, I do NOT see a proper validation
>>>>>> performed in this case - Main.wod. I actually changed the
>>>>>> binding > condition = session.isUserAuthenticated; to an
>>>>>> erroneous method (isUserAuthenticatedX) and changed the title
>>>>>> in the HTML file to trigger a re-validation, but this
>>>>>> validated OK - there was no red X indicating a problem.
>>>>>>
>>>>>> And as previously mentioned, I changed the session syntax to
>>>>>> Session(with a capital S), but this triggered an error re no
>>>>>> 'Session' class found. So I interpret this to mean that it is
>>>>>> finding the session class, but for some reason cannot find any
>>>>>> of the class methods (ie. generates an NSKeyValueCoding
>>>>>> exception > UnknownKeyException > lookup for unknown key:
>>>>>> isUserAuthenticated).
>>>>>>
>>>>>> This is very puzzling in that something about this particular
>>>>>> project fails, whereas the other demos run/build Ok.
>>>>>>
>>>>>> Fred
>>>>>>
>>>>>> D Tim Cummings wrote:
>>>>>>> On 29/09/2007, at 7:59 AM, Fred Shurtleff wrote:
>>>>>>>
>>>>>>>> Actually each chapter is a separate project which gets
>>>>>>>> imported into Eclipse, and, of course, contains only 1
>>>>>>>> Session class. Furthermore I have not made ANY change to the
>>>>>>>> project files ie. Main or Session.java, nor the Main.wod
>>>>>>>> files. I simple want to demo their technique of managing
>>>>>>>> security using a few methods in the session class to control
>>>>>>>> access to various public/secure areas in the application.
>>>>>>>>
>>>>>>> I find sometimes if I have several projects open in eclipse,
>>>>>>> WO Component Editor validates against the wrong Session or
>>>>>>> Application class. Closing the unused projects fixes the
>>>>>>> problem.
>>>>>>>
>>>>>>>> WOComponentEditor does not complain about the bindings -
>>>>>>>> that is there are no red X's or other symbols indicating a
>>>>>>>> problem. Matter of fact, I did change the binding to
>>>>>>>> 'Session.isUserAuthenticated'(with a capital S since WOLips
>>>>>>>> does create a default Session.java file), and when I ran the
>>>>>>>> app it did complain that there was no 'Session' class. So I
>>>>>>>> interpret this to mean the session class is referenced Ok,
>>>>>>>> but none of the session class methods or variables are
>>>>>>>> accessible. But I can't see why!
>>>>>>>>
>>>>>>>
>>>>>>> You need to make a small change, eg add a space to the html,
>>>>>>> to the WOComponent and save it to trigger WO Component Editor
>>>>>>> to revalidate the bindings.
>>>>>>>
>>>>>>> Session.isUserAuthenticated will be looking first for a
>>>>>>> method in your component called Session() or getSession()
>>>>>>> which won't work
>>>>>>>
>>>>>>> session.isUserAuthenticated will be looking first for a
>>>>>>> method session() which exists in WOComponent which your
>>>>>>> component extends. WOComponentEditor must do some funky
>>>>>>> stuff to determine that session() returns an object of type
>>>>>>> Session rather than type WOSession to complete the validation.
>>>>>>>
>>>>>>> Tim
>>>>>>>
>>>>>>>> I am totally stumped on this one.
>>>>>>>>
>>>>>>>> Jean Pierre Malrieu wrote:
>>>>>>>>> My guess is that there are several "Session" classes
>>>>>>>>> corresponding to different chapters in the book, and that
>>>>>>>>> somehow, you are using the wrong "Session" (from a previous
>>>>>>>>> chapter?) which does not have the required variables and
>>>>>>>>> functions.
>>>>>>>>> What does WOComponentEditor say about the bindings? Does it
>>>>>>>>> complain?
>>>>>>>>>
>>>>>>>>> jpm
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Le 28 sept. 07 à 19:56, Fred Shurtleff a écrit :
>>>>>>>>>
>>>>>>>>>> Yes - this is the conditional causing the exception. So I
>>>>>>>>>> changed the condition = true (to get around this problem),
>>>>>>>>>> and then another 'unknown key' exception is triggered:
>>>>>>>>>> authenticatedUser is unknown(but is in fact a public
>>>>>>>>>> method in session.java).
>>>>>>>>>>
>>>>>>>>>> So for some reason none of the bindings on Main.wod using
>>>>>>>>>> session PUBLIC methods/vars are recognizable eg. they
>>>>>>>>>> trigger exception errors. Can anyone see what might be the
>>>>>>>>>> problem here?
>>>>>>>>>>
>>>>>>>>>> Jean Pierre Malrieu wrote:
>>>>>>>>>>> Without taking a look at the book, or the code, so just a
>>>>>>>>>>> guess: Did you try changing the wod to
>>>>>>>>>>>
>>>>>>>>>>> Conditional: WOConditional {
>>>>>>>>>>> condition = session.isUserAuthenticated;
>>>>>>>>>>> }
>>>>>>>>>>>
>>>>>>>>>>> ?
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> jpm
>>>>>>>>>>>
>>>>>>>>>>> Le 27 sept. 07 à 21:49, Fred Shurtleff a écrit :
>>>>>>>>>>>
>>>>>>>>>>>> Has anyone been able to run the Chapter4App demo from
>>>>>>>>>>>> the Practical WebObjects Book by Hill & Mallais?
>>>>>>>>>>>>
>>>>>>>>>>>> I am unable to get this project to run - it raises an
>>>>>>>>>>>> Exception > An instance variable or method of the name
>>>>>>>>>>>> 'isUserAuthenticated' is not found(this is a
>>>>>>>>>>>> WOConditional binding on the Main page). But
>>>>>>>>>>>> 'isUserAuthenticated' is, in fact, a method in
>>>>>>>>>>>> Session.java. So I am now at a dead end.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks for any ideas or suggestions.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> Practical WebObjects - for developers who want to increase
>>>>> their overall knowledge of WebObjects or who are trying to
>>>>> solve specific problems.
>>>>> http://www.global-village.net/products/practical_webobjects
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>> --
>>
>> Practical WebObjects - for developers who want to increase their
>> overall knowledge of WebObjects or who are trying to solve
>> specific problems.
>> http://www.global-village.net/products/practical_webobjects
>>
>>
>>
>>
>>
>
>
--Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems. http://www.global-village.net/products/practical_webobjects
This archive was generated by hypermail 2.0.0 : Thu Oct 25 2007 - 19:08:30 EDT