Hello!

Changing server-global parameters (like docRoot) on per-application basis
(from application event loop) is not supported. Could you tell more details
about why you want this feature, so I can find more suitable workaround,
please? For example, there are other options to keep multiple servers or
applications inside one process or to change static files used (CSS theme).

Remember, WApplication::instance() aka wApp must be accessed only from
application event loop, not from server-global code. And second, you should
never create application manually. If you do not follow these rules, you'll
get segfault.

-
Best regards,
Boris Nagaev


On Tue, Jul 1, 2014 at 12:04 AM, Jeffrey Scott Flesher Gmail <
jeffrey.scott.fles...@gmail.com> wrote:

>  I need to use Wt::WApplication from a standalone function:
>
> In Configuration.C in need to change docRoot based on the URL (see 
> http://redmine.emweb.be/issues/3404 <http://redmine.emweb.be/issues/3404:>): 
> <http://redmine.emweb.be/issues/3404:>
>
> void Configuration::readOptions(const po::variables_map& vm)
> {
>   if (vm.count("docroot"))
>   {
>     docRoot_ = vm["docroot"].as<std::string>();
>
>  std::string myCDR;
>  // Get host Name
>  // const Wt::WEnvironment& env = new Wt::WEnvironment(); // is protected, so 
> you can not do this
>  Wt::WApplication *app = new Wt::WApplication(env);
>  Wt::WApplication *app = Wt::WApplication::instance();
>
> both of these cause segment fault
> did not really get this far, since it crashed before even getting here
>
>  MyApplication* myapp = boost::polymorphic_downcast(app);
>
> I want to change the docRoot based on the URL
>  std::string domainName = app->environment().hostName().c_str();
>  // Remove Port if it exist
>  unsigned pos = domainName.find(":");
>  if (pos > 0)
>    domainName = domainName.substr(0, pos);
>  // Now do a look up
>  if (!Wt::WApplication::readConfigurationProperty("customDocRoot-" + 
> domainName, myCDR))
>      Wt::log("error") << "WApplication::docRoot() readConfigurationProperty 
> not found customDocRoot-" << domainName << " in wt_config.xml";
>  if (!myCDR.empty())
>    docRoot_ = myCDR.c_str();
>
> Since all I really need is a way to get the domainName and read from 
> wt_config, there might be other options.
> ***
>
> Another example I never got to work is here
> In BlogRSSFeed.C constructor, I need to change the messageResourceBundle, 
> ever attempt I make crashes with segment fault:
>   const Wt::WEnvironment& env = Wt::WApplication::instance()->environment(); 
> // segment fault WEnvironment& WApplication::env()
>   Wt::WApplication *app = new Wt::WApplication(env);
> or
>   Wt::WApplication* app = Wt::WApplication::instance(); // segment fault
>
>   Wt::WApplication::UpdateLock lock(app);  // Wt::WApplication::instance() ~ 
> segment fault in UpdateLock: impl_ = new UpdateLockImpl(app);
>   if (lock) {
>         app->messageResourceBundle().use(myDomainPath[domainName] + 
> "app_root/ww-home", false);
>   }
>
> I actually thought that maybe I could something like this:
> server.addResource(&rssFeed, "/" + rootPrefix + "en/blog/feed/");
> server.addResource(&rssFeed, "/" + rootPrefix + "cn/blog/feed/");
> server.addResource(&rssFeed, "/" + rootPrefix + "ru/blog/feed/");
> then just change the links in the app, or use a cookie to read what language 
> it is, not sure what is best,
> cookies are not so good, but I need a way to know what language they want, 
> which is not necessarily the default browsers language.
>
> I am sure that there is a way to do this, Boris gave me a good description of 
> how to go about doing this,
> but he is making me feel stupid, because ever way I try it, it still crashes.
>
> I am stuck, and I really need to find a way to do this, I need an example 
> that does not produce a segment fault in these functions,
> everyone says its easy, no problem just do this, well all I get is crashes, I 
> am sure once I see the right way of doing it,
> it will then click in, but until then, I am stuck.
>
> Thanks
>
>
>
> ------------------------------------------------------------------------------
> Open source business process management suite built on Java and Eclipse
> Turn processes into business applications with Bonita BPM Community Edition
> Quickly connect people, data, and systems into organized workflows
> Winner of BOSSIE, CODIE, OW2 and Gartner awards
> http://p.sf.net/sfu/Bonitasoft
> _______________________________________________
> witty-interest mailing list
> witty-interest@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/witty-interest
>
>
------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
witty-interest mailing list
witty-interest@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/witty-interest

Reply via email to