WebHub Object Pascal Components
- Dynamic ServerProfile without dash symbol v3.200
- This error message, "SetName ServerProfileSP-2109787722 is not a valid component name" has been resolved.
- This problem had happened after Windows was running long enough for GetTickCount to return a negative number.
- Source: webInfoU.pas
- JSON wrapper supports array syntax v3.200
- Please see the online reference; search for JSON.
- Note this JSON wrapper requires Delphi XE2 or later.
- Source: ucJSONWrapper.pas
- Corrected cross-AppID links with short URLs v3.200
- When UseAppID was false, the target AppID was not inserted when StreamCatcher was also used. This problem
had been introduced in v3.195.
- Source: LocAWO in whcfg_App.pas
- TwhdbSourceIBO improved for IBObjects v3.200
- The cloned dataset will have the same TIB_Connection and TIB_Session as the master copy. The TIB_Transaction object
can cloned or similarly shared, depending on the Boolean property CloneTransactions.
- This means that there is no longer a need to set those properties in BeforeOpen event handler on the TIBOQuery.
- Source: wdbIBObjOSource.pas
- XSD for App-Level Config v3.200
- The new date for the XSD is 201309. The complete url is
http://static.webhub.com/xsd/cv004/WebHubAppConfiguration201309.xsd
- Fixed: component whScan explicitly supported; whdbSource FieldSets supported.
- XSD for App-Level Config v3.204
- The new date for the XSD is 201310. The complete url is
http://static.webhub.com/xsd/cv004/WebHubAppConfiguration201310.xsd
- XSD for App-Level Config v3.207
- The new date for the XSD is 201311. The complete url is
http://static.webhub.com/xsd/cv004/WebHubAppConfiguration201311.xsd
- Fixed: component whStringGrid explicitly supported (required for Hub v2).
- Hints added for configuring the list of Teko files.
- App-Level Config Validated v3.200
- The WebHub Components now validate the application-level XML file in the same way that ZMAdmin does.
This means that syntax errors within the XML file will no longer be ignored when the WebHub application EXE loads.
It also means that portions of the components that WRITE to the
XML file will maintain the integrity of the node sequence, most notably the email panel.
- There are two new properties on the Central Info component to support this.
ConfigFileXsdSummaries: TZaphodXmlDoc
and XSDSummaryFilespec: string
.
- If you want to download just the latest WebHub cv004 XSD summary file without waiting for a new Runtime Setup,
you will find it here.
- If there are inconsistencies between the WebHub Component source and the application XSD, EZaphodException will be
raised and handled. The exception text will be saved as a Refresh error which is visible on the Html > Errors panel and in the
log file for the app.
- Delphi XE5 Supported v3.200
- WebHub v3.200 source compiles with Delphi XE5 VCL. The non-gui base layers also compile for FireMonkey, notably ZaphodsMap and most of TPack.
- Sync to main thread v3.200
- This change is relevant for WebHub apps that touch the GUI during page execution. One example of this is the
standard email panel, when used with its optional GUI.
- The WebHub page calculation occurs inside a thread, and that is now synchronized to the main thread when
OnNewMail is called. If using CodeSite, this is when you see 'HubSentWork' in the log.
- Google Sitemap v3.201
- If using StreamCatcher and a non-blank ProjectLingvo, the googlesitemap will now contain the default projectlingvo
in the URLs within the map.
- Example: <loc>http://www.csweb.biz/en/csweb/contact</loc>
- Source: webhub\lib\whsample_GoogleSitemap.pas
- Reject Session with Short URLs v3.201
- If using StreamCatcher in the current server profile, RejectSession will bounce the surfer to a short URL.
Previously, rejected surfers were bounced to a long URL even when StreamCatcher was in place.
- Session.SessionLingvo v3.201
- This property returns the surfer StringVar['guestlingvo'], or if that is blank, the ProjectLingvo setting.
- Mail.HostName length extended v3.201
- The prior maximum length for the smtp host was 32 characters. Now it is 253 characters.
- AjaxObserver component v3.202
- A webaction component named AjaxObserver is included in whsample_PrototypeJS.pas
- AJAXTimedEvent has been retired.
- See http://lite.demos.href.com/htaj demo.
- Added ftWideMemo support to TwhdbSource v3.202
- This is important if using the latest version of IBObjects v5.
- Added ftFloat support to ucIBObjCodeGen.pas v3.203
- whsample_DMProjMgr for v3 v3.203
- There was an Include statement missing from the top of whsample_DMProjMgr and that is now present. The line is
{$I WebHub_Comms.inc}
and it had been missing since 6-Aug-2013.
- That line simply brings in the correct compiler DEFINE for WebHub v3.
- NativeXml, ZaphodsMap: calls to NodesByName v3.203
- Added checks around calls to NodesByName to avoid access violation. This had been an issue in some cases
with WebHub and the Restorer on form close.
- WebHub and Rubicon v3.204
- Previously, WebHub Components had to be installed before Rubicon. Now you can install either one first or second.
Both register TtpComponentPanel as a component.
- new property: pWebApp.UseSharedLogFolder v3.203
- See online docs. This is important if you are working on troubleshooting, especially if you are using the
runner or Hub that logs to CodeSite CSL files.
- Forget Restorer v3.203
- See online docs. There is a new way to make WebHub applications Forget the restorer component.
This is recommended when deploying as-service or when deploying multiple instances.
- Correction for on-exit A/V fixed in v3.204. This was noticable only when certain panels were visible in the GUI,
including the HTML panel.
- Error Reporting v3.203
- For unrecognized expressions, webSend.pas reports the TekeroID which was active at the time of the attempted expansion.
- New property: Security.ReadOnlySessionID v3.204
- Optional
- Set this to a SessionID that should be reserved for API calls such as AJAX or SOAP requests -- where you
want speed and zero save-state for that single SessionID.
- See also: new virtual function on TwhApplication: IsReadOnlySessionNum
- To try this, go into any of the lite demos with either the user agent set to a popular webrobot or with
session number 999999.
- To configure, use ZMAdmin, navigate to your AppID, and expand sections until you get to the
properties.
- If you were counting on saved-session-data for the guest lingvo for webrobots, you may need to
change from guestlingvo in WHTEKO to the new SessionLingvo property, because the latter automatically defaults to the project lingvo and thus generates no errors when expanded.
- StreamCatcher: WebRobot session is readonly v3.204
- This applies only to people using StreamCatcher.
- The session dedicated to WebRobots is now readonly. It is never saved.
- One consequence is that OnNewSession will fire *often* for webrobot user agents. Be careful to avoid
logging in OnNewSession for the WebRobot session number, otherwise log files on production servers
will be Very Large, Very Quickly!
- New methods for testing 403 conditions v3.204
- These are on the TwhResponse component: SimulateAppNoRunning, SimulateAppCoverPage, SimulateAppIDBusy,
SimulateHubNotFound, SimulateRequestTimeout.
- Example usage is in the webhubdemos project. See monitor.whteko and whdemo_Extensions.pas.
- XE5 Update 1 v3.204
- DCU files for XE5 are being built with update 1 now.
- Tuning for TIBOQuery v3.204
- This applies to people using IBObjects.
- The webdatasource has been customized so that the DoBeforeClone method automatically checks whether the TIB_Statement
has been prepared, and if it has not been, the Prepare method is called. This matters when the SQL.Text is modified by
the OnBeforeOpen event handler of the TIB_Statement (e.g. the TIBOQuery).
- In addition there is a new OnBeforeClone event handler available on the base webdatasource, in case any further
custom modifications are required.
- This should help avoid this message: Assertion failure (IBODataset.pas, line 7367).
- CodeSite Logging v3.204
- For those compiling with CodeSite, the following are now automatically logged to aid in tracing program logic:
CLEAR|* (clear all stringvars), SESSION command, and each webaction.execute call.
- Fixes for access violation in webdatasource v3.205
- TwhBasicSession.SaveStates in webVars.pas has been fixed so that when the SessionEndWith is seIgnore or seDelete,
there is no attempt made to run through any save-state steps.
- Note: after a call to RejectSession, SessionEndWith is seIgnore. (This is not a change, just FYI.)
- If you bounce badly behaved webrobots or other agents, set SessionEndWith to seIgnore before doing the bounce.
- It is possible to patch this change into earlier versions of WebHub.
- A new method TwhdbSource.DoBeforeHouseClean now makes sure that any DataSet that is Destroyed by HouseClean
will not be referenced by the owning webdatasource. The symptom with this (former bug) was that an attempt to
reference the DataSet property could yield an access violation if-and-only-if HouseClean had run earlier on the same page for the same session and due to OpenDataSetRetain seconds having elapsed, the DataSet had been destroyed.
- Catch references to nil WebAction.Execute v3.205
- There is now code in both tpAction.pas and webSend.pas to watch for any attempt to execute a
nil webaction component. This may have happened when there was a .Execute of an invalid component name (i.e. typo).
- TtpAction.DoExecute does nothing if Self does not point to a valid TtpAction.
- CodeSite Logging v3.205
- This applies only if you compile with -DCodeSite.
- The log will contain a mention of each web action when called.
- The log will contain a mention of each component destroyed by HouseClean on a webdatasource.
- For quickest overview of site traffic, use CodeSite Viewer, menu: .
Select these 4 message types: Warnings, Errors, Exceptions and Level 4.
- WebDataSource: expiration of cloned datasets v3.205
- Previously the Tag on the cloned dataset contained the expiration tick count. Now it contains the last-active tick count.
- DoBeforeHouseClean is called on TwhdbSource to set FDataSet to nil when (cloned) dataset is about-to-be-destroyed by HouseClean.
- htThread and whAsync units are being retired v3.205
- These units are no longer included in the core WebHub package.
- The TwhAsyncAction component is no longer registered on the palette.
- Developers should refactor projects to use Delphi OmniThreadLibrary.
- The async demo has been refactored and is live on http://more.demos.href.com/htasync.
- As of v3.206, the whasync unit is not included with WebHub.
- String concatenation with JSON wrapper v3.206
- You can now concatenate strings coming from the JSON wrapper class without first explicitly casting those values to string.
- Source: ucJSONWrapper (in TPACK).
- tpStreams.pas v3.206
- Handle exception within TtpStream.ReadLWideString (this had surfaced within WebHub EXE in rare cases)
- Critical Section lenience v3.206
- More classes now call TryEnter rather than Enter for TCriticalSection processing.
- Source: tpStatus.pas, webSplat.pas
- Session Cookie erased upon RejectSession v3.206
- RejectSession had not been erasing the session cookie when, for example, the user agent switched from human to webrobot.
- Source: webVars.pas, webSend.pas
- Fix to tpStreams.pas v3.206
- ReadEncodedLength and WriteEncodedLength: fixed
- This solves the problem with the Hub-runner-app disconnect after certain URLs.
- INPUTDEFAULT command added v3.208
- This can be used with any HTML input tag including the new HTML5 types such as number, range, color, etc.
- Syntax example: input type="range" name="inX" value="(~INPUTDEFAULT|inX~)"
- Syntax example: input type="number" name="inY" value="(~INPUTDEFAULT|inY~)"
- Syntax example: input type="month" name="inExpMo" value="(~INPUTDEFAULT|inExpMo~)"
- Syntax example: (~INPUTDEFAULT|txtVar.txtMessage~)
- Generally the name of the input would be the same as that passed to INPUTDEFAULT.
- No debug (log) entry is created if the stringvariable is blank or does not (yet) exist.
- See the Lite FORM demo for examples.
- Source: htWebApp.pas
- Decode > Count Report v3.209
- The WebHub Syntax Report, previously available only on the Html > Decode > Count panel, is now available
on the HTML > Errors panel. Use the button on the toolbar to start the report.
- The implementation has been moved to a separate unit. Delphi coders can call the report directly from
any Delphi button or TwhWebAction component.
- Source: uCheckWhtekoSyntax.pas, procedure WhtekoSyntaxReport.
- Branding - retired v3.209
- The lite branding demo has been deleted.
- The SendJumpBrand and related methods have been deleted.
- The BRANDFILE command has been deleted.
Use INCLUDE to send the content of a static file within a dynamic WebHub page.
(
top)
The Hub, WebHubAdmin, ZMAdmin
- Higher priority to Covered AppID message v3.201
- If an AppID has been covered, then that information will be reported to the surfer, even if the associated process
is not running. (v3.200)
- If an AppID has been covered, then that information will be reported to the surfer, even if THE HUB
is not running. (v3.201)
- Avoid AppIDBusy when Debugging from Delphi IDE v3.206
- Default AppAverageCalcMSec to 10ms; avoid using any values over 5 seconds when calculating average
- Non-responsive Hub - resolved v3.206
- Certain URLs in certain sequences with certain posted data packets were able to reliably disconnect the runner and hub,
making all requests time out. You must recompile with components v3.206 and use the latest v3.206 Hub and Runner to get the fix. Combining older components with the latest runtime will not work.
- Fixed A/V on exit v2.207
- Old-ipc only: upgrade to v2.199 or to v2.207+.
- This a/v showed up when hub was started and stopped without routing any requests.
- Fixed startup exception v2.207
- Old-ipc only
- Regarding this exception during Hub.exe v2 startup: "Method GetXPathElementsEx reports: XPath is invalid: /WebHubAppConfiguration/ComponentConfig/whStringGrid not found in XsdSummary" ... the problem was in the
webhub\config\ZMAdminPanel-WebHub-cv004-xsdSummaries.xml file. A corrected file is included with v2.207.
- Output Panel captions v3.207
- Captions for the trace feature have been reset to fit better on their toolbar (Delphi XE5).
- Trace Button activates based on whether the AppID has refreshed. (Previously it activated based on whether an
active Connection was available after Refresh.)
- Lite/Evaluation Usage v3.209
- In case of excess use with a lite or evaluation license, the CodeSite log for the app will contain some details which can be
reviewed with technical support. Regardless, the cure for 'Terminating @wb685' is to install a proper paid license.
- Use ZMAdmin to enter the license or edit WHLicense.xml in Notepad.
- Order deployment licenses at www.href.com/hrefshop
- Hub/Runner connection v3.209
- Significant fix for intermittent hub-runner disconnect (which in earlier versions could only be reset by
server reboot or by stopping both w3svc and hub services, then restarting Hub, then restarting w3svc).
- The symptom of this problem was that requests for ?h:vers would fail even when Hub was running.
(
top)
WebHub Runners
- WHRunner429 http header is obsolete v3.200
- The ISAPI runner had been sending a 'WHRunner429' http header for tracking purposes. Now it does not do that.
- X-CoverMinutes http header v3.200
- When an AppID has been covered, the runner will report the number of minutes of expected downtime as an HTTP header
for use by javascript on the client side. This is in addition to the details reported in the payload of the http response,
i.e. maintenance start time, number of minutes and reason for downtime.
- Branding mode - retired v2.209
- The old-ipc mode runner had support for a brand command. This feature is no longer available.
(
top)