VA 8 Beta 1 ibmst.icx does not work with Seaside

VA Smalltalk is a "100% VisualAge compatible" IDE that includes the original VisualAge technology and the popular VA Assist and WidgetKit add-ons.

Moderators: Eric Clayberg, wembley, tc, Diane Engles, solveig

VA 8 Beta 1 ibmst.icx does not work with Seaside

Postby klaus » Thu Feb 19, 2009 1:50 pm

Hello,

whenever I use the ibmst.icx, the image without VA Base and VA Assist Pro, to load Seaside, then Seaside does not work. An exception occurs in #WAResponse -> #application, caused by #WAObject -> #requestContext, where #WACurrentRequestContext class ->#value is nil.

What is missing in the image ibmst.icx, that crashes Seaside? Is it a missing initialisation or method? I couldn't detect the difference.
Stack trace is appended.

Kind regards

Klaus
Code: Select all
Debugger Stack Trace Report:
Error String: 'UndefinedObject does not understand application'
Resumable: false

Process
   Name: Dispatch worker: 12365
   Process State: suspended
   Priority: 3

Executing in: WAResponse(WAObject)>>#application

System Configuration Dump


Copyright:

   VA Smalltalk V8.0 BETA1; Image: 8.0
   VM Timestamp: 4.0,(NC) 11/5/2008 (76)
   (C) Copyright Instantiations 1994, 2008.  All rights reserved.
   (C) Copyright International Business Machines Corp. 1994, 2006.  All rights reserved.

Time:  22:42:21
Date:  19.02.2009

Platform:

   Virtual machine:  ES
   Bytecode version:  4.0
   Manager version:  4.00
   'OS' subsystem:  'WIN32s'
   'CLIM' subsystem:  'ES'
   'CP' subsystem:  'WIN32s'
   'CLDT' subsystem:  'ES'
   'CFS' subsystem:  'WIN32s'
   'SCI' subsystem:  'WIN'
   'CW' subsystem:  'WIN32s'
   'CPM' subsystem:  'ES'
   'CG' subsystem:  'WIN32s'
   'CPIC' subsystem:  'WIN32s'

Current user:  Library Supervisor

Connected Library:

   Pathname:  C:\Programme\Instantiations\VA Smalltalk\8.0\manager\mgr80.dat

INFO: Trapped error dumping system configuration.
=============<STACK TRACE BEGINS>============
[] in <optimized block>(ExceptionalEvent class)>>#initializeSystemExceptions
   signal=Signal on Exception: (ExError) An error has occurred.
Signal>>#evaluate:
   self=Signal on Exception: (ExError) An error has occurred.
   aBlock=[] in ExceptionalEvent class>>#initializeSystemExceptions
ExceptionalEvent>>#applyDefaultHandler:
   self=Exception: (ExError) An error has occurred.
   aSignal=Signal on Exception: (ExError) An error has occurred.
   exception=Exception: (ExError) An error has occurred.
ExceptionalEvent>>#signalFor:
   self=Exception: (ExError) An error has occurred.
   aSignalOrExceptionSelector=Signal on Exception: (ExError) An error has occurred.
   handler=nil
ExceptionalEvent>>#signalWithArguments:
   self=Exception: (ExError) An error has occurred.
   arguments=('UndefinedObject does not understand application')
ExceptionalEvent>>#signalWith:
   self=Exception: (ExError) An error has occurred.
   arg1='UndefinedObject does not understand application'
UndefinedObject(Object)>>#error:
   self=nil
   aString='UndefinedObject does not understand application'
MessageNotUnderstood>>#defaultAction
   self=Signal on Exception: (ExMessageNotUnderstood) An exception has occurred
[] in <optimized block>(Exception class)>>#newExceptionalEvent
   signal=Signal on Exception: (ExMessageNotUnderstood) An exception has occurred
MessageNotUnderstood(Exception)>>#evaluate:
   self=Signal on Exception: (ExMessageNotUnderstood) An exception has occurred
   aBlock=[] in Exception class>>#newExceptionalEvent
ExceptionalEvent>>#applyDefaultHandler:
   self=Exception: (ExMessageNotUnderstood) An exception has occurred
   aSignal=Signal on Exception: (ExMessageNotUnderstood) An exception has occurred
   exception=Exception: (ExMessageNotUnderstood) An exception has occurred
MessageNotUnderstood(Signal)>>#handlesByDefault
   self=Signal on Exception: (ExMessageNotUnderstood) An exception has occurred
[] in BlockContextTemplate(Block)>>#when:do:exitWith:retryReturn:
   self=[] in SstHttpInvokerServlet>>#service:
   exception=Exception: (ExSstHttpRequestError) A servlet request error has occurred.
   handlerBlock=[] in SstHttpInvokerServlet>>#service:
   exitBlock=[] in Block>>#when:do:
   knownResult=an Object
   retryBlock=[] in Block>>#when:do:exitWith:retryReturn:
   handler=[] in Block>>#when:do:exitWith:retryReturn:
   oldHandler=nil
   signal=Signal on Exception: (ExMessageNotUnderstood) An exception has occurred
[] in BlockContextTemplate(Block)>>#when:do:exitWith:retryReturn:
   self=[] in WAResponse>>#initialize
   exception=Exception: (ExWARequestContextNotFound) An exception has occurred
   handlerBlock=[] in WAResponse>>#initialize
   exitBlock=[] in Block>>#when:do:
   knownResult=an Object
   retryBlock=[] in Block>>#when:do:exitWith:retryReturn:
   handler=[] in Block>>#when:do:exitWith:retryReturn:
   oldHandler=[] in Block>>#when:do:exitWith:retryReturn:
   signal=Signal on Exception: (ExMessageNotUnderstood) An exception has occurred
ExceptionalEvent>>#signalFor:
   self=Exception: (ExMessageNotUnderstood) An exception has occurred
   aSignalOrExceptionSelector=Signal on Exception: (ExMessageNotUnderstood) An exception has occurred
   handler=[] in Block>>#when:do:exitWith:retryReturn:
MessageNotUnderstood(Exception)>>#signal
   self=Signal on Exception: (ExMessageNotUnderstood) An exception has occurred
MessageNotUnderstood class(Exception class)>>#signalWith:
   self=MessageNotUnderstood
   signallerTag=(nil Message (#application, ()))
UndefinedObject(Object)>>#doesNotUnderstand:
   self=nil
   aMessage=Message (#application, ())
WAResponse(WAObject)>>#application
   self=a WAResponse 200
[] in WAResponse>>#initialize
   self=a WAResponse 200
BlockContextTemplate(Block)>>#valueWithErrorHandler:oldHandler:onReturnDo:
   self=[] in WAResponse>>#initialize
   handler=[] in Block>>#when:do:exitWith:retryReturn:
   oldHandler=[] in Block>>#when:do:exitWith:retryReturn:
   completionBlock=[]
BlockContextTemplate(Block)>>#when:do:exitWith:retryReturn:
   self=[] in WAResponse>>#initialize
   exception=Exception: (ExWARequestContextNotFound) An exception has occurred
   handlerBlock=[] in WAResponse>>#initialize
   exitBlock=[] in Block>>#when:do:
   knownResult=an Object
   retryBlock=[] in Block>>#when:do:exitWith:retryReturn:
   handler=[] in Block>>#when:do:exitWith:retryReturn:
   oldHandler=[] in Block>>#when:do:exitWith:retryReturn:
BlockContextTemplate(Block)>>#when:do:
   self=[] in WAResponse>>#initialize
   exception=Exception: (ExWARequestContextNotFound) An exception has occurred
   handlerBlock=[] in WAResponse>>#initialize
   knownResult=an Object
   result=nil
WARequestContextNotFound class(Exception class)>>#handle:do:
   self=WARequestContextNotFound
   protectedBlock=[] in WAResponse>>#initialize
   handlerBlock=[] in WAResponse>>#initialize
BlockContextTemplate(Block)>>#on:do:
   self=[] in WAResponse>>#initialize
   selector=WARequestContextNotFound
   action=[] in WAResponse>>#initialize
WAResponse>>#initialize
   self=a WAResponse 200
   application=nil
WAResponse class(WAObject class)>>#new
   self=WAResponse
WAResponse class>>#document:
   self=WAResponse
   anObject=a WAMimeDocument
   document=a WAMimeDocument
WAResponse class>>#document:mimeType:
   self=WAResponse
   anObject='.window {
   border: 1px solid #aaa;
}
.window .window-titlebar {
   color: #444;
   padding: 5px;
   overflow: hidden;
   background-color: #eee;
   border-bottom: 1px solid #aaa;
   font: 10pt Verdana, Arial, Helvetica, sans-serif;
}
.window .window-titlebar .window-title {
   float: left;
   font-weight: bold;
   padding-left: 20px;
}
.window .window-titlebar .window-close {
   float: right;
}
.window .window-titlebar .window-close a {
   color: #444;
   text-decoration: none;
}
.window .window-titlebar .window-close a:hover {
   color: #111;
}
.window .window-content {
   clear: both;
   padding: 2px;
}'
   aMimeType=a WAMimeType(text/css)
WAStandardFiles(WALibrary)>>#documentAt:ifAbsent:
   self=a WAStandardFiles
   aFilename='window.css'
   aBlock=[] in WAFileHandler>>#responseForContext:
   selector=#windowCss
WAStandardFiles class(WALibrary class)>>#documentAt:ifAbsent:
   self=WAStandardFiles
   aFilename='window.css'
   aBlock=[] in WAFileHandler>>#responseForContext:
[] in WAFileHandler>>#responseAt:ifForbidden:ifAbsent:
   self=a WAFileHandler named: 'files'
   aPath=OrderedCollection('WAStandardFiles' 'window.css' )
   forbiddenBlock=[] in WAFileHandler>>#responseForContext:
   absentBlock=[] in WAFileHandler>>#responseForContext:
   libraryClass=WAStandardFiles
True>>#ifTrue:ifFalse:
   self=true
   trueAlternativeBlock=[] in WAFileHandler>>#responseAt:ifForbidden:ifAbsent:
   falseAlternativeBlock=[] in WAFileHandler>>#responseForContext:
WAFileHandler>>#responseAt:ifForbidden:ifAbsent:
   self=a WAFileHandler named: 'files'
   aPath=OrderedCollection('WAStandardFiles' 'window.css' )
   forbiddenBlock=[] in WAFileHandler>>#responseForContext:
   absentBlock=[] in WAFileHandler>>#responseForContext:
   libraryClass=WAStandardFiles
WAFileHandler>>#responseForContext:
   self=a WAFileHandler named: 'files'
   aRequestContext=a WARequestContext
   path=OrderedCollection('WAStandardFiles' 'window.css' )
   baseUrl=/seaside/files
   requestUrl=/seaside/files/WAStandardFiles/window.css
[] in WAFileHandler(WARequestHandler)>>#handleRequest:
   self=a WAFileHandler named: 'files'
   aRequestContext=a WARequestContext
WARequestContext>>#push:while:
   self=a WARequestContext
   aRequestHandler=a WAFileHandler named: 'files'
   aBlock=[] in WARequestHandler>>#handleRequest:
WAFileHandler(WARequestHandler)>>#handleRequest:
   self=a WAFileHandler named: 'files'
   aRequestContext=a WARequestContext
WADispatcher>>#responseForContext:
   self=a WADispatcher named: 'seaside'
   aRequestContext=a WARequestContext
[] in WADispatcher(WARequestHandler)>>#handleRequest:
   self=a WADispatcher named: 'seaside'
   aRequestContext=a WARequestContext
WARequestContext>>#push:while:
   self=a WARequestContext
   aRequestHandler=a WADispatcher named: 'seaside'
   aBlock=[] in WARequestHandler>>#handleRequest:
WADispatcher(WARequestHandler)>>#handleRequest:
   self=a WADispatcher named: 'seaside'
   aRequestContext=a WARequestContext
SstSeasideServlet>>#doGet:
   self=a SstSeasideServlet
   message=a SstHttpServletRequest
   request=a WARequest GET /seaside/files/WAStandardFiles/window.css
   response=nil
   sstResponseContents=nil
[] in SstSeasideServlet(SstHttpServlet)>>#service:
   self=a SstSeasideServlet
   message=a SstHttpServletRequest
   selector=#doGet:
LookupTable>>#at:ifPresent:
   self=LookupTable(#doOptions: #doHead: #doDelete: #doGet: #doPost: #doPut: #doTrace: )
   aKey='GET'
   aBlock=[] in SstHttpServlet>>#service:
   hashIndex=14
   element='GET'
   elementsSize=22
   index=14
SstSeasideServlet(SstHttpServlet)>>#service:
   self=a SstSeasideServlet
   message=a SstHttpServletRequest
SstHttpInvokerServlet>>#basicService:
   self=a SstHttpInvokerServlet
   request=a SstHttpServletRequest
   servlet=a SstSeasideServlet
[] in SstHttpInvokerServlet>>#service:
   self=a SstHttpInvokerServlet
   request=a SstHttpServletRequest
BlockContextTemplate(Block)>>#valueWithErrorHandler:oldHandler:onReturnDo:
   self=[] in SstHttpInvokerServlet>>#service:
   handler=[] in Block>>#when:do:exitWith:retryReturn:
   oldHandler=nil
   completionBlock=[]
BlockContextTemplate(Block)>>#when:do:exitWith:retryReturn:
   self=[] in SstHttpInvokerServlet>>#service:
   exception=Exception: (ExSstHttpRequestError) A servlet request error has occurred.
   handlerBlock=[] in SstHttpInvokerServlet>>#service:
   exitBlock=[] in Block>>#when:do:
   knownResult=an Object
   retryBlock=[] in Block>>#when:do:exitWith:retryReturn:
   handler=[] in Block>>#when:do:exitWith:retryReturn:
   oldHandler=nil
BlockContextTemplate(Block)>>#when:do:
   self=[] in SstHttpInvokerServlet>>#service:
   exception=Exception: (ExSstHttpRequestError) A servlet request error has occurred.
   handlerBlock=[] in SstHttpInvokerServlet>>#service:
   knownResult=an Object
   result=nil
SstHttpInvokerServlet>>#service:
   self=a SstHttpInvokerServlet
   request=a SstHttpServletRequest
SstSeasideServletEngine(SstHttpServletEngine)>>#basicProcessRequest:
   self=a SstSeasideServletEngine
   servletRequest=a SstHttpServletRequest
   responseContent=nil
   responseMessage=false
SstSeasideServletEngine(SstBasicServer)>>#processClientRequest:
   self=a SstSeasideServletEngine
   request=a SstHttpServletRequest
   context=a SstServletContext
   sessionManager=a SstWAS40SessionManager
   result=nil
SstSeasideServletEngine(SstHttpServer)>>#processClientRequest:
   self=a SstSeasideServletEngine
   request=a SstHttpServletRequest
   response=nil
SstSeasideServletEngine(SstHttpServletEngine)>>#processClientRequest:
   self=a SstSeasideServletEngine
   request=a SstByteMessage
SstSeasideServletEngine(SstBasicServer)>>#processRequest:
   self=a SstSeasideServletEngine
   request=a SstByteMessage
SstRequest(DirectedMessage)>>#send
   self=SstRequest (a SstSeasideServletEngine, #processRequest:, (a SstByteMessage))
[] in SstPooledDispatcher(SstDispatcher)>>#basicExecuteRequest:
   self=a SstPooledDispatcher
   request=SstRequest (a SstSeasideServletEngine, #processRequest:, (a SstByteMessage))
   sstTag=#SstTag:Execute
   savedRequest=nil
   oldErrorHandler=nil
SstPooledDispatcher(SstDispatcher)>>#basicExecuteRequest:
   self=a SstPooledDispatcher
   request=SstRequest (a SstSeasideServletEngine, #processRequest:, (a SstByteMessage))
   sstTag=#SstTag:Execute
   savedRequest=nil
   oldErrorHandler=nil
SstPooledDispatcher(SstDispatcher)>>#dispatchRequest:
   self=a SstPooledDispatcher
   request=SstRequest (a SstSeasideServletEngine, #processRequest:, (a SstByteMessage))
   result=SstInvocationHandler(http://localhost:8788/)
[] in SstPooledDispatcher>>#dispatchRequest:
   self=a SstPooledDispatcher
   request=SstRequest (a SstSeasideServletEngine, #processRequest:, (a SstByteMessage))
[] in SstWorkerManager>>#blockFor:forWorker:
   self=a SstWorkerManager
   workBlock=[] in SstPooledDispatcher>>#dispatchRequest:
   worker=SstWorker(Dispatch worker: 12365; occupied)
[] in SstWorker>>#workBlock
   self=SstWorker(Dispatch worker: 12365; occupied)
   current=[] in SstWorkerManager>>#blockFor:forWorker:
[] in Process>>#executeBlock:withArguments:
   self=Process:Dispatch worker: 12365{suspended,3}
   aBlock=[] in SstWorker>>#workBlock
   args=()
Process>>#executeBlock:withArguments:
   self=Process:Dispatch worker: 12365{suspended,3}
   aBlock=[] in SstWorker>>#workBlock
   args=()
Process>>#newProcessOn:stackSize:withArguments:named:
   self=Process:Dispatch worker: 12365{suspended,3}
   aBlock=[] in SstWorker>>#workBlock
   stackSize=1024
   args=()
   procName='12365'
==============<STACK TRACE ENDS>=============
Klaus Breker
Currently working for clearstream (Deutsche Börse Group)
klaus
 
Posts: 38
Joined: Fri Nov 28, 2008 1:16 am
Location: Bonn

Re: VA 8 Beta 1 ibmst.icx does not work with Seaside

Postby wembley » Mon Feb 23, 2009 9:01 am

Klaus -

In your ibmst.icx, how did you load Seaside -- from the feature map or from plain config maps? If from plain config maps, which maps did you load?
John O'Keefe [|], Principal Smalltalk Architect, Instantiations Inc.
wembley
Moderator
 
Posts: 405
Joined: Mon Oct 16, 2006 3:01 am
Location: Durham, NC

Re: VA 8 Beta 1 ibmst.icx does not work with Seaside

Postby klaus » Mon Feb 23, 2009 5:32 pm

Hi,

I loaded Seaside from the feature map and also from the config map z.ST: Server Smalltalk (SST) - Seaside V 8.0.0 [113]

Regards

Klaus
Klaus Breker
Currently working for clearstream (Deutsche Börse Group)
klaus
 
Posts: 38
Joined: Fri Nov 28, 2008 1:16 am
Location: Bonn

Re: VA 8 Beta 1 ibmst.icx does not work with Seaside

Postby klaus » Wed Feb 25, 2009 5:35 am

Hello John,

I loaded the Seaside feature and then the VA Assist Pro feature. With VA Assist Pro Seaside works. Then I loaded after the Seaside feature the following applications until Seaside run:
- WbKernel
- StsImageManagement
- StsPowerToolsKernel
- StsPowerTools

After I loaded the application StsPowerTools Seaside worked.

What is the magic in the application StsPowerTools and if I build a deployment image including Seaside, the StsPowerTools have to be included?

Regards

Klaus
Klaus Breker
Currently working for clearstream (Deutsche Börse Group)
klaus
 
Posts: 38
Joined: Fri Nov 28, 2008 1:16 am
Location: Bonn

Re: VA 8 Beta 1 ibmst.icx does not work with Seaside

Postby klaus » Thu Feb 26, 2009 3:58 am

Hello John,

the application StsPowerTools extends #Object with an implementation of #application, which returns a simple nil. If I delete this method, Seaside crashes. If I load this method, everthing works fine.

Regards

Klaus
Klaus Breker
Currently working for clearstream (Deutsche Börse Group)
klaus
 
Posts: 38
Joined: Fri Nov 28, 2008 1:16 am
Location: Bonn

Re: VA 8 Beta 1 ibmst.icx does not work with Seaside

Postby klaus » Wed Mar 11, 2009 8:19 am

Hello,

I changed #WAObject -> #application. Otherwise I couldn't package a runtime image.

Code: Select all
application
   "Answer the current seaside application, instance of WAApplication or a subclass."
   
   | aRequestContext |

   ^(aRequestContext := self requestContext) isNil
      ifTrue: [nil]
      ifFalse: [aRequestContext application]
      


Kind regards

Klaus
Klaus Breker
Currently working for clearstream (Deutsche Börse Group)
klaus
 
Posts: 38
Joined: Fri Nov 28, 2008 1:16 am
Location: Bonn

Re: VA 8 Beta 1 ibmst.icx does not work with Seaside

Postby benvandijk » Thu Mar 12, 2009 2:44 am

Hi Klaus,

I just managed to build a runtime starting with the abt.icx and ran into the same problem.
However i have a different solution, i changed WAResponse -> initialize to handle the error correctly:

Code: Select all
initialize
   | application |
   super initialize.
   stream := SeasidePlatformSupport readWriteStream.
   status := 200.
   application := [ self application ]
      on: WARequestContextNotFound
      do: [ :error | error exitWith: nil ].
   contentType := application isNil
      ifFalse: [ application contentType ]
      ifTrue: [ self class defaultValueForContentType ]


I leave it up to John to come up with a permanent fix.
benvandijk
 
Posts: 45
Joined: Sun Feb 25, 2007 7:14 am
Location: Arnhem, Netherlands


Return to VA Smalltalk 7.0, 7.5 & 8.0

Who is online

Users browsing this forum: Yahoo [Bot] and 1 guest