Apache 2.x and ISAPI: missing GetExtensionVersion()
Hi,
Ignore my previous post. I progressed with the Apache example to the point
where the web page show the list of Reports for the Examples volume name.
But if I click on one of the reports (e.g.. rb0001CustomerList) I get the
following error in the Apache error.log file:
[error] (OS 127)The specified procedure could not be found. : ISAPI:
missing GetExtensionVersion() in C:/Program Files/Apache
Group/Apache2/rbbin/Report.dll
My Project file:
===========
library Report;
uses
WebBroker,
ApacheTwoApp,
rbWebModule in 'rbWebModule.pas' {WebModule1: TWebModule};
{$R *.res}
exports
apache_module name 'Report_module';
begin
ModuleName := 'report_module';
Handler := 'report-handler';
Application.Initialize;
Application.CreateForm(TWebModule1, WebModule1);
Application.Run;
end.
My TrsWebTier configurations:
=====================
CacheDirectory: C:\Program Files\Apache Group\Apache2\rbbin\rbcache\
WebCachePath: http://172.16.13.51/rbcache/
WebModuleURI: http://172.16.13.51/rbbin/Report.dll
In my httpd.conf (apache configs):
======================
(I created these sub folders: C:\Program Files\Apache
Group\Apache2\rbbin\rbcache)
ServerRoot "C:/Program Files/Apache Group/Apache2"
LoadModule Report_module rbbin/Report.dll
Sethandler report-handler
AddHandler isapi-isa .dll
#=============================== ReportBuilder ISAPI
=======================
ScriptAlias /rbbin/ "C:/Program Files/Apache Group/Apache2/rbbin/"
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
Alias /rbcache/ "C:/Program Files/Apache Group/Apache2/rbbin/rbcache/"
Options All
AllowOverride None
Order allow,deny
Allow from all
#=================================================================================
Any help will be appreciated.
Regards,
Nols Smit
Ignore my previous post. I progressed with the Apache example to the point
where the web page show the list of Reports for the Examples volume name.
But if I click on one of the reports (e.g.. rb0001CustomerList) I get the
following error in the Apache error.log file:
[error] (OS 127)The specified procedure could not be found. : ISAPI:
missing GetExtensionVersion() in C:/Program Files/Apache
Group/Apache2/rbbin/Report.dll
My Project file:
===========
library Report;
uses
WebBroker,
ApacheTwoApp,
rbWebModule in 'rbWebModule.pas' {WebModule1: TWebModule};
{$R *.res}
exports
apache_module name 'Report_module';
begin
ModuleName := 'report_module';
Handler := 'report-handler';
Application.Initialize;
Application.CreateForm(TWebModule1, WebModule1);
Application.Run;
end.
My TrsWebTier configurations:
=====================
CacheDirectory: C:\Program Files\Apache Group\Apache2\rbbin\rbcache\
WebCachePath: http://172.16.13.51/rbcache/
WebModuleURI: http://172.16.13.51/rbbin/Report.dll
In my httpd.conf (apache configs):
======================
(I created these sub folders: C:\Program Files\Apache
Group\Apache2\rbbin\rbcache)
ServerRoot "C:/Program Files/Apache Group/Apache2"
LoadModule Report_module rbbin/Report.dll
Sethandler report-handler
AddHandler isapi-isa .dll
#=============================== ReportBuilder ISAPI
=======================
ScriptAlias /rbbin/ "C:/Program Files/Apache Group/Apache2/rbbin/"
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
Alias /rbcache/ "C:/Program Files/Apache Group/Apache2/rbbin/rbcache/"
Options All
AllowOverride None
Order allow,deny
Allow from all
#=================================================================================
Any help will be appreciated.
Regards,
Nols Smit
This discussion has been closed.
Comments
There is an Apache example installaed with the RBServer examples. See
RBServer\Demos\Web Tier\APACHE\ReadMe.doc. The example creates an Apache
Shared Module. As explained in the ReadMe.doc, we did not have good results
with the ISAPI, but the Shared Module worked well.
The developer that created the example is not longer here and we do not have
any Apache expertise here, however the example has been successfully
implemented by other customers.
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
and the steps are mixing the implementation of a ISAPI dll with a Apache
Shared Module. There is also no mentioning of the step in the file named
httpd.conf of the LoadModule Report_module rbbin/Report.dll statement and
step 4 under Deploy the WebTier as an Apache Shared Module
is about ISAPI configurations.
As stated, I get the first web page showing the list of Reports for the
Examples volume but if I click on one of the reports (e.g..
rb0001CustomerList) I get the following error in the Apache error.log file:
[error] (OS 127)The specified procedure could not be found. : ISAPI:
missing GetExtensionVersion() in C:/Program Files/Apache
Group/Apache2/rbbin/Report.dll
I came to the conclusion that the TrsWebTier component is strictly bounded
to a ISAPI dll and it can't be used in a Apache Shared module for the simple
reason that one (referring to the project file) has to include the
GetExtensionVersion statement under Exports but this statement is bounded to
ISAPIApp under uses
I'm quite willing to use IIS but my objective is to have full control over a
ReportBuilder Server application. I would like to activate a RB server
application from a IntraWeb application after I build up the SQL query,
depending on ComboBox and RadioGroup selections. It seems there are two
possibilities:
1) Use rsWebTier on a IntraWeb form - The problem here is that the IntraWeb
form has no Actions property
2) Activate a stand-alone RB Server application and give the needed
parameters - I hope if I use this step, I wouldn't not get the error message
"already used by another process".
As you can see, RB server seems a nice stand-alone product but is very
confusing how to integrate it in a practical environment.
Regards,
Nols Smit
1. There is nothing in ReportBuilder Server Edition that requires ISAPI
2. I will try to download and test with Apache. Sounds like we need to
update the ReadMe.doc so that it is more accurate. I know we have customers
that have successfully used the WebTier and Apache.
3. The TrsWebTier.ProcessWebRequest method is used to process a web request
and generate an html response. It is not dependant upon any specific web
application architecture. All web applications do the same basic thing -
process a web request and generate a response.
(Actions are part of WebBroker and thus the web broker examples use Actions
to invoke the WebTier.ProcessWebRequest method.)
4. The other option, as you mentioned, is to call a webtier application from
another web application.
To call a WebTier application from another application via URL, see the
following tech tip
---------------------------------------------
Tech Tips: How can I request that the webtier
execute a specified report?
---------------------------------------------
Question:
---------
Without using the Web ReportExplorer, how can I request that the webtier
execute a specified report?
Solution:
---------
The webtier processes requests for web content. These requests consists of
1. The URL for the webtier
example: http://127.0.0.1/rbWebPub/report.dll
2. A parameter specifying the content type.
example: content=viewer
{note: content=viewer, is used to request report viewer content.}
3. Additional parameters that are specific to the content request.
volume=Report Forms (the volume name)
Name=Basic\Biolife Table (the full path name to the report)
frameset=1 (show the framset with the toolbar etc., this is required)
Use a web browser to access the webtier demo that displays the report
explorer.
Notice that when you place the mouse over a report in the report explorer
that the status bar in IE shows the url plus some params. That is the string
required to run the report on the web tier.
Example:
http://127.0.0.1/rbWebPub/report.dll?content=viewer&volume=Report
Forms&name=Basic\Biolife Table&framset=1
So the parameters here are
content=viewer (type of content is report viewer)
volume=Report Forms (the volume name)
Name=Basic\Biolife Table (the full path name to the report)
frameset=1 (show the framset with the toolbar etc., this is required)
4. AutoSearch Parameters
To specify autosearch parameters for a report, include the parameter
'newsearch=T' followed by the autosearch parameters.
AutoSearch parameters have the following naming convention: asgXfYse and
asgXfYsa.
The asgX specifies the autosearch group number, where X is the number. The
fY specifies the field number, where Y is the number. The se indicates that
the value is a search expression and the sa specifies that the value is the
"show all" boolean expression.
Example:
content=viewer
newsearch=T
asg0f0se=S
asg0f0sa=false
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
There is quite more to it than the skimpy documentation in the example. I
will path the documentation and forward it.
Regards,
Nols Smit
I downloaded Apached 2.x and was able to get the WebTier to work as an
Apache Shared Module. I am re-writing the ReadMe.doc. I will post a download
to this newsgroup once I have it completed.
Thanks for the feedback. Please send your notes or docs to
support@digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
Wouldn't ya know, today I'm trying to use apache instead of IIS and
found your promise of a new ReadMe file, so how are you coming with the
new doc? Please let me know when you are done.
Or maybe, Nols would like to post how he was able to get Apache to work
with report builder.
Thanks,
Dave
I just put this togeter this downloadable example with an included
ReadMe.txt
www.digital-metpahors.com/tips/RBWebTier_Apache.zip
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
Other than the misspelled url, I was able to get the zip file.
Thanks for the quick response and update.
Dave