We have a different setup. A simple example, as we use tclws, would be:
proc ::WS::AOLserver::call_op {when why} {
# {{{
::WS::AOLserver::Init
::WS::AOLserver::Return
# return and stop all filters
return -return_code return filter_break
# }}}
}
proc ::WS::AOLserver::InitEchoSoapURLs {service host port service_desc} {
if { ![nsv_exists init soap::${service}::init_done] } {
nsv_set init soap::${service}::init_done 1
# register the service in tclws
::WS::Server::Service -mode aolserver -prefix "/SOAP/${service}"
-service $service -description $service_desc -host $host -ports $port
# register a filter for the ops (doc, op, wsdl)
ad_register_filter -priority 400 preauth * /SOAP/${service}/*
::WS::AOLserver::call_op
# Define any special types
::WS::Utils::ServiceTypeDef Server $service echoReply {
echoBack {type string}
echoTS {type dateTime}
}
# Define the operations available
::WS::Server::ServiceProc $service \
{
SimpleEcho {type string comment {Requested Echo}}
} {
TestString {type string comment {The text to echo back}}
} { Echo a string back } {
return [list SimpleEchoResult $TestString]
}
}
}
set service "echo"
set host "localhost:8080"
set port "8080"
set desc "Echo Service"
::WS::AOLserver::InitEchoSoapURLs $service $host $port $desc
I've simpliefied the code a bit, so it should run on any naviserver
installation, except for the ad_register_filter call. I haven't testet
this simplified code, so expect some typos. But I think you'll get the
general idea.
This is all sourced at startup. The filter catches all requests to the
service, an internal redirect is not necessary.
Wolfgang
Am 2017-01-02 um 16:06 schrieb Claudio Pasolini:
Thanks Gustaf and Wolfgang.
I modified the proc ::WS::AOLserver::Return as per Gustaf suggestion,
but I have not yet succeeded executing the sample EchoWebService.
To reduce the complexity I modified the call to the service so as to
make a single call to the SimpleEcho method. Executing the script
CallEchoWebService I receive a screen with the correct results, but
looking at the error.log it seems that the calls to
::WS::AOLserver::Return be duplicated and finally I get an error
complaining that the connection is already closed.
Here is an excerpt of the error log.
[02/Jan/2017:15:37:13][3409.7fa0d5398700][-conn:oacs-5-9:4-] Notice:
WS::AOLserver::Redirect: from '{} tclws ws echoexample wsdl' to
'/tclws/ws/echoexample/index.tcl'
[02/Jan/2017:15:37:13][3409.7fa0d5398700][-conn:oacs-5-9:4-] Notice:
...entering ::WS::AOLserver::Return requestType=wsdl
[02/Jan/2017:15:37:13][3409.7fa0d5398700][-conn:oacs-5-9:4-] Notice:
... calling ::WS::Server::generateWsdl
[02/Jan/2017:15:37:13][3409.7fa0d5398700][-conn:oacs-5-9:4-] Notice:
...entering ::WS::AOLserver::Return requestType=wsdl
[02/Jan/2017:15:37:13][3409.7fa0d5398700][-conn:oacs-5-9:4-] Notice:
... calling ::WS::Server::generateWsdl
[02/Jan/2017:15:37:13][3409.7fa0d5499700][-conn:oacs-5-9:3-] Notice:
Calling SimpleEcho via DoCalls!
[02/Jan/2017:15:37:13][3409.7fa0d5398700][-conn:oacs-5-9:4-] Notice:
WS::AOLserver::Redirect: from '{} tclws ws echoexample op' to
'/tclws/ws/echoexample/index.tcl'
[02/Jan/2017:15:37:13][3409.7fa0d5398700][-conn:oacs-5-9:4-] Notice:
...entering ::WS::AOLserver::Return requestType=op
[02/Jan/2017:15:37:13][3409.7fa0d5398700][-conn:oacs-5-9:4-] Notice:
...::WS::AOLserver::Return calling ::WS::Server::callOperation
service=echoexample sock=nosock
[02/Jan/2017:15:37:13][3409.7fa0d5398700][-conn:oacs-5-9:4-] Notice:
...entering ::WS::AOLserver::Return requestType=op
[02/Jan/2017:15:37:13][3409.7fa0d5499700][-conn:oacs-5-9:3-] Notice:
Received: {SimpleEchoResult {This is a test}}
[02/Jan/2017:15:37:13][3409.7fa0d5398700][-conn:oacs-5-9:4-] Error:
connection already closed, can't get content
while executing
"ns_conn content"
(procedure "ns_getcontent" line 75)
invoked from within
"ns_getcontent -as_file false -binary false"
("uplevel" body line 37)
invoked from within
"uplevel 1 {
set sock nosock
ns_log notice "\n...entering ::WS::AOLserver::Return
requestType=$requestType"
switch -exact -- $requestType {
..."
(procedure "::WS::AOLserver::Return" line 3)
invoked from within
"::WS::AOLserver::Return"
I don't understand why this is happening.
Wolfgang: did You modify the proc ::ws_aolserver_redirect replacing
ns_rewriteurl with ns_internalredirect?
Best regards.
Claudio
2017-01-02 13:34 GMT+01:00 Wolfgang Winkler
<wolfgang.wink...@digital-concepts.com
<mailto:wolfgang.wink...@digital-concepts.com>>:
Hi Claudio!
I can confirm what Gustaf wrote below. We are using our own
initialization routine, which is similar to the one provided by
the tclws package. We have our own logging facilities, wo we don't
need the log package:
namespace eval ::WS::AOLserver {
if {![info exists wsVersion]} {
variable wsVersion [package require WS::Server]
}
#if {![info exists logVersion]} {
# variable logVersion [package require log]
#}
}
For returning values, we use exactly the line from Gustaf:
set data(query) [ns_getcontent -as_file false -binary false]
This is handy for REST interfaces as well.
regards,
Wolfgang
Am 2016-12-31 um 17:51 schrieb Gustaf Neumann:
Am 30.12.16 um 19:00 schrieb Claudio Pasolini:
Hi all,
I'm in the process of upgrading several OpenACS instances and
migrating them from AolServer 4.5 to the latest NaviServer.
One of the instances makes use of TCLWS for bulding a couple of
SOAP web services and I'm having trouble to make it work.
Here are the first problems encountered:
* ns_ictl doesn't support the 'package' argument. I replaced
the command
ns_ictl package require log
with
ns_ictl trace allocate {package require log}
probably, using "package require log" will be sufficient as well.
* but I'm not sure about eventual side effects.
* In a proc called by ns_register_filter preauth I replaced
ns_rewrite with ns_internalredirect but I observed a strange
behaviour. ns_register_filter invokes the proc passing one
argument, but actually the proc receives two, prehauth being
added.
you are probably referring to the old module "nsredirect".
Calling ns_internalredirect should be fine.
Yes, there is a difference between the calling conventions in
AOLserver and NaviServer:
NaviServer tells the developer the stage, at which the proc was
invoked (the same proc
might be registered for multiple states (such as "preauth",
"postauth" or "trace"). This
difference is as well handled in e.g. OpenACS since 10+ years.
* I stumbled in the same problem posted by Wolfgang Winkler
Error: can't set "xsltSchemaDom": var is read-only
and solved it thanks to Gustaf tip.
should not happen in recent versions of NaviServer
* Calling the sample EchoWebService I get a strange error
Error: invalid length: 779
executing the command
ns_conn copy 0 $length $fp
this comes probably from this section:
https://github.com/bovine/tclws/blob/master/AOLserver.tcl#L82
<https://github.com/bovine/tclws/blob/master/AOLserver.tcl#L82>
I would think that you can replace the section "Get POSTed data"
by something like:
set data(query) [ns_getcontent -as_file false -binary false]
This has at least the following advantages
- less hacky
- works for http and https
- works also when spooling post data
all the best
-gn
I wonder if someone (Wolfgang?) having already a production site
running TCLWS with NaviServer could suggest me how to proceed.
Happy New Year!
Claudio
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org!http://sdm.link/slashdot
_______________________________________________
naviserver-devel mailing list
naviserver-devel@lists.sourceforge.net
<mailto:naviserver-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/naviserver-devel
<https://lists.sourceforge.net/lists/listinfo/naviserver-devel>
--
Univ.Prof. Dr. Gustaf Neumann
WU Vienna
Institute of Information Systems and New Media
Welthandelsplatz 1, A-1020 Vienna, Austria
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org!http://sdm.link/slashdot
_______________________________________________
naviserver-devel mailing list
naviserver-devel@lists.sourceforge.net
<mailto:naviserver-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/naviserver-devel
<https://lists.sourceforge.net/lists/listinfo/naviserver-devel>
--
*Wolfgang Winkler* Geschäftsführung
wolfgang.wink...@digital-concepts.com
<mailto:wolfgang.wink...@digital-concepts.com> mobil
+43.699.19971172 <tel:+43%20699%2019971172> dc:*büro* digital
concepts Novak Winkler OG Software & Design Landstraße 68, 5.
Stock, 4020 Linz www.digital-concepts.com
<http://www.digital-concepts.com> tel +43.732.997117.72 tel
+43.699.1997117.2 Firmenbuchnummer: 192003h Firmenbuchgericht:
Landesgericht Linz
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________ naviserver-devel
mailing list naviserver-devel@lists.sourceforge.net
<mailto:naviserver-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/naviserver-devel
<https://lists.sourceforge.net/lists/listinfo/naviserver-devel>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
naviserver-devel mailing list
naviserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/naviserver-devel
--
*Wolfgang Winkler* Geschäftsführung
wolfgang.wink...@digital-concepts.com mobil +43.699.19971172 dc:*büro*
digital concepts Novak Winkler OG Software & Design Landstraße 68, 5.
Stock, 4020 Linz www.digital-concepts.com
<http://www.digital-concepts.com> tel +43.732.997117.72 tel
+43.699.1997117.2 Firmenbuchnummer: 192003h Firmenbuchgericht:
Landesgericht Linz
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
naviserver-devel mailing list
naviserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/naviserver-devel