首页 \ 问答 \ Grails部署 - 最快的部署方式?(Grails Deployment - Fastest way to get deployed?)

Grails部署 - 最快的部署方式?(Grails Deployment - Fastest way to get deployed?)

如果任何人有或正在他们的服务器上运行Grails应用程序,我将不胜感激关于创建WAR之后要去哪里的一些细节。

背景

我选择了Grails,因为使用Google App EngineApp Engine Plugin部署应该是微不足道的。 这个问题是,有一个错误 ,使任何应用程序几乎无法使用,我希望这是更突出,所以我不必在我意识到之前自己看到错误的点。

接下来的选择是EC2和云工具插件,看起来云工具与grails 1.0一起工作,但由于获取JAR依赖关系的问题,无法与当前的1.2.1一起使用。 似乎云工具已被测试成功Cloud Foundry 成功 ,将花费额外的资金并且地点有限(我注册但没有收到电子邮件)。

我的应用程序是痛苦的微不足道的,它有一个小负载,小数据需求,并不需要扩展过去5个用户。

我怎样才能尽快且无痛地部署我的Grails应用程序?

特别:

  • 是否有任何托管公司在他们的服务器上安装了tomcat,我可以注册并使用它们,这只会起作用?
  • 你知道任何简单的教程来获取grails应用程序部署到EC2没有云工具?

提前致谢,

GAV

注意 :由于SO良好建议,我选择了grails,从开发到部署产品的时间应该很短,除非自动部署工具不够成熟,我以前从未配置过服务器。


If anyone has or is running a Grails application on their server I would appreciate some details on where to go after creating the WAR.

Background

I chose grails because with Google App Engine and the App Engine Plugin deployment should have been trivial. This issue is that there is a bug which makes any application pretty much unusable, I wish this had been more prominent so I didn't have to get to the point of seeing the error myself before I was aware of it.

The next option was EC2 and the Cloud Tools plugin, it seems Cloud Tools worked with grails 1.0 but doesn't work with the current 1.2.1 due to issues getting the JAR dependencies. It also seems that Cloud Tools has been succeeded by Cloud Foundry which is in beta, will cost extra money and has limited places (I signed up but haven't got an e-mail).

Question

My application is painfully trivial, it has a small load, small data requirements and doesn't need to scale past 5 users.

How can I deploy my grails app as quickly and painlessly as possible?

Specifically:

  • Are there any hosting companies that have tomcat installed on their servers out of the box that I can sign up to and use that will just work?
  • Do you know of any simple tutorials for getting a grails application deployed to EC2 without Cloud Tools?

Thanks in advance,

Gav

Side-note: I picked grails because of good advice from SO, it should have been a very short time from development to deployed product except the tools for auto-deployment aren't that mature and I've never configured a server before.


原文:https://stackoverflow.com/questions/2475711
更新时间:2023-11-27 19:11

最满意答案

您正试图在Explorer完全启动之前创建图标。 您应该优雅地处理错误 (向下滚动到“处理Shell_NotifyIcon失败”)。

您还应该处理TaskbarCreated通知 - 它允许您在Explorer崩溃并重新启动后重新创建图标。


You're attempting to create the icon before Explorer has fully started. You should handle errors gracefully (scroll down to "Handling Shell_NotifyIcon failure").

You should also handle the TaskbarCreated notification -- it enables you to recreate your icons after Explorer crashes and restarts.

相关问答

更多
  • 服务在与登录用户不同的窗口站中运行,因此您无法获得系统托盘图标。 从https://docs.microsoft.com/en-us/dotnet/framework/windows-services/introduction-to-windows-service-applications : Windows服务应用程序在与登录用户的交互式站点不同的窗口站中运行。 窗口站是一个安全的对象,它包含一个剪贴板,一组全局原子和一组桌面对象。 由于Windows服务站不是交互式工作站,因此从Windows服务应用程 ...
  • 您正试图在Explorer完全启动之前创建图标。 您应该优雅地处理错误 (向下滚动到“处理Shell_NotifyIcon失败”)。 您还应该处理TaskbarCreated通知 - 它允许您在Explorer崩溃并重新启动后重新创建图标。 You're attempting to create the icon before Explorer has fully started. You should handle errors gracefully (scroll down to "Handling S ...
  • 您将需要一个全球访问的全局托盘图标。 通过在类的不同实例中使用一个静态变量来实现这一点。 那么,如果你想: 打开一个表单:在变量中保留对最新表单的引用并将其打开。 打开所有最小化的表单:遍历每个表单并再次打开它们。 You will need a single global tray icon that they all access. Do this by using a static variable that stays the same throughout different instances ...
  • 没有。 即使你有这些信息,你会对这些信息做些什么呢? (告诫 - 我想你可以做一个屏幕抓取,找出任务栏的位置,找出系统托盘的位置,“解析”每个图标,然后位图将每个图标与你自己的图标进行比较。但是真的......) 看这个相关的问题可能值得你 基于第一个编辑问题 我可以看出你的观点。 但是从Windows API设计者的POV看它。 他们提供了一种以“始终可见”的方式创建图标的工具。 并且每个人+狗继续在那里放置一个图标,假设用户总是想知道他们的产品(请注意,我不是声称你在这里是这个组)。 他们已经注意到这种 ...
  • 创建托盘图标的应用程序终止时,Windows不会自动删除托盘图标。 只有当用户用鼠标悬停在鼠标上并注意到拥有进程不再存在时,它才会这样做。 要确保立即删除该图标,您必须在程序退出时调用systemTray.remove(yourIcon) 。 When an application which created a tray icon is terminated, Windows doesn't remove the tray icon automatically. It only does so when ...
  • 由于你没有提供任何代码,我将继续进行预测和幸运猜测: 生成通知图标时实现的逻辑将在您更改应用中的页面时发生的事件上执行。 (可能) 你的计算机内部有一只花栗鼠,他觉得星期一就像是在掌握大师日。 (不太可能) Since you're not giving any code, I'm gonna go on hunches and lucky guesses: The logic you implemented to generate a notification icon gets executed on ...
  • 可能不是,至少不容易。 之前已经讨论过这个问题。 Probably not, at least not easily. This issue been discussed before.
  • 你不能。 获取系统托盘的窗口句柄并不难,GetClassName()返回标准TOOLBAR公共控件的类名“ToolbarWindow32”。 请注意,64位操作系统有两个。 然后你可以像TB_GETBUTTONINFO一样发送消息给它。 首席挂断是你不知道按钮ID选择和返回的信息不包括按钮的位置。 哪个更好,按钮移动而不能锁定它们。 You can't. It isn't hard to get the window handle for the system tray, GetClassName() re ...
  • 您阻止事件循环。 这不会奏效。 不幸的是,ZMQ不提供任何特定于平台的消息循环集成。 因此,您必须在单独的线程中使用它。 这更容易,因为无论如何将网络代码放在窗口小部件类中都是糟糕的设计。 创建一个封装网络的ZMQ对象,并将其推送到单独的线程。 只要你与ZMQ实例的所有通信都是通过信号/槽或QMetaObject::invokeMethod ,你就可以了。 有关Thread代码,请参阅此答案 。 class ZMQ : public QObject { Q_OBJECT Q_SLOT void ru ...
  • 这当然是一个竞争条件。 是的,重试是一个好主意,但是我会延迟做。 让应用程序启动,但在尝试与任务栏连接之前,使用QTimer :: singleShot()延迟5秒(或其他)。 如果您想在此之后重试(这可能是一个好主意),延迟时间会更长(因为重试将会发生得太快),因为立即重试可能不会成功。 It certainly is a race condition. Retrying is a good idea, yes, but instead I'd do it with delays. Have the ap ...

相关文章

更多

最新问答

更多
  • 如何使用自由职业者帐户登录我的php网站?(How can I login into my php website using freelancer account? [closed])
  • 如何打破按钮上的生命周期循环(How to break do-while loop on button)
  • C#使用EF访问MVC上的部分类的自定义属性(C# access custom attributes of a partial class on MVC with EF)
  • 如何获得facebook app的publish_stream权限?(How to get publish_stream permissions for facebook app?)
  • 如何并排放置两个元件?(How to position two elements side by side?)
  • 在MySQL和/或多列中使用多个表用于Rails应用程序(Using multiple tables in MySQL and/or multiple columns for a Rails application)
  • 如何隐藏谷歌地图上的登录按钮?(How to hide the Sign in button from Google maps?)
  • Mysql左连接旋转90°表(Mysql Left join rotate 90° table)
  • 带有ImageMagick和许多图像的GIF动画(GIF animation with ImageMagick and many images)
  • 电脑高中毕业学习去哪里培训
  • 电脑系统专业就业状况如何啊?
  • IEnumerable linq表达式(IEnumerable linq expressions)
  • 如何在Spring测试中连接依赖关系(How to wire dependencies in Spring tests)
  • Solr可以在没有Lucene的情况下运行吗?(Can Solr run without Lucene?)
  • 如何保证Task在当前线程上同步运行?(How to guarantee that a Task runs synchronously on the current thread?)
  • 在保持每列的类的同时向数据框添加行(Adding row to data frame while maintaining the class of each column)
  • 的?(The ? marks in emacs/haskell and ghc mode)
  • 一个线程可以调用SuspendThread传递自己的线程ID吗?(Can a thread call SuspendThread passing its own thread ID?)
  • 延迟socket.io响应,并“警告 - websocket连接无效”(Delayed socket.io response, and “warn - websocket connection invalid”)
  • 悬停时的图像转换(Image transition on hover)
  • IIS 7.5仅显示homecontroller(IIS 7.5 only shows homecontroller)
  • 没有JavaScript的复选框“关闭”值(Checkbox 'off' value without JavaScript)
  • java分布式框架有哪些
  • Python:填写表单并点击按钮确认[关闭](Python: fill out a form and confirm with a button click [closed])
  • PHP将文件链接到根文件目录(PHP Linking Files to Root File Directory)
  • 我如何删除ListView中的项目?(How I can remove a item in my ListView?)
  • 您是否必须为TFS(云)中的每个BUG创建一个TASK以跟踪时间?(Do you have to create a TASK for every BUG in TFS (Cloud) to track time?)
  • typoscript TMENU ATagParams小写(typoscript TMENU ATagParams lowercase)
  • 武陟会计培训类的学校哪个好点?
  • 从链接中删除文本修饰(Remove text decoration from links)