问题标签 [grails-services]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scope - 使用 Grails 服务上传照片
我想问一下,我在 Grails 中的上传照片服务最适合的范围是什么?我在我的 Grails 2.3.4 Web 应用程序中创建了这个 PhotoService,它所做的只是获取 request.getFile("myfile") 并在用户想要上传图像时执行必要的步骤将其保存在硬盘上。为了说明它的样子,我给出了这些类的骨架。
上面的代码不是确切的代码,我只是想展示一下流程。但我的问题是:
问题:我找不到这些不同 grails 范围的确切定义,它们有一个单一的解释,但我无法弄清楚请求范围是否意味着对控制器的每个请求都注入一个 bean,或者每次请求来上传控制器的动作?
想法:基本上由于许多用户可能同时上传,使用单例范围不是一个好主意,所以我的选择是原型或请求我猜。那么其中哪一个运行良好,哪一个仅在仅访问 PhotoService 时创建?
我正在尝试最小化注入应用程序上下文的服务数量,并且只要 Web 应用程序处于活动状态就一直存在,基本上我希望服务实例在 Web 应用程序生命周期的某个时刻死亡或收集垃圾,而不是在没有用的时候徘徊在记忆中。我正在考虑将其设为会话范围,因此当用户的会话终止时,服务也会被清理,但在某些情况下,用户可能不想上传任何照片,并且无缘无故地创建了服务。
PS:如果我在上传()中移动“def photoService”,这是否使它只在调用上传请求时被注入?我认为这可能会引发异常,因为在 Spring 注入服务之前会有延迟,然后对 def photoService 的引用将是 n
multithreading - 多线程的 Grails 服务
如果消息是并行的,一次最多创建 10 个以下NewProcessor的线程。为了进行测试,使用了 20 条具有相同参数的消息,并且预期在Net域的 DB 中只有一条记录,但创建了多条记录。
经过几个小时的各种更改,我仍然无法弄清楚问题所在......
grails - Grails 页面计数器
我需要为某些页面创建一个计数器。所以我创建了一个名为 Counter 的域:
计数是这个页面打开了多少次,提交是提交了多少次表单(联系表单的种类)。
我创建了一个名为 CounterService 的服务:
我将使用 Quartz 作业每小时将计数器保存到数据库中。
你认为这个计数器变量是多线程安全的吗?因为 CounterService 会在很多 Controller 中被调用。我需要在服务器启动之前调用 load 并且我不知道在哪里调用它。对我应该在哪里调用 load() 有什么建议吗?或者,也许是页面计数器的更好解决方案?
web-services - 在 Grails 中更改应用程序名称后无法访问 Web 服务
我的 Grails 应用程序中有一个 SOUP Web 服务。在更改应用程序名称之前可以访问它application.properties
,localhost:8080/appName/Services/
但现在在更改应用程序名称page not found
后会出现错误。我不知道为什么会这样。
grails - 如何在 grails 域类中设置公式?
我正在尝试在我的域类中编写公式,以帮助我创建标准。
每当我试图在我的标准中使用此字段时,它都会引发错误,即无法解析“myClass”的属性“ddmmyy”。
我的标准是:
知道为什么我会为此例外吗?
grails - Grails 服务中的服务声明错误
我担心在其他服务中使用服务。有些工作,但其他人没有。问题是我无法弄清楚出了什么问题。
当你添加一个产生错误的服务时总是出现同样的问题,那么我撤回对服务有问题的引用,系统恢复正常。
我想知道这是否会影响任何造成不稳定的循环引用。
当 Bootstrap 引用指向具有对 tabService 服务的引用的域时,会发生错误。
并生成此日志:
我正在使用 Grails 2.3.7
grails - 服务的 Grails Session 范围未按预期工作
我正在制作一个将各种类型的报告存储为域对象的 Web 应用程序,因此我有一个域对象HeadOfHousehold
,其中包含名称数据,以及对其他域对象(例如reports
、addresses
和任何依赖项)的引用。我正在尝试构建最近查看/创建的HeadOfHousehold
对象的列表。在多次谷歌搜索和搜索手册之后,服务似乎是一个合适的解决方案。所以我创建了ClientListService
:
我以为我可以在我的各种控制器中引用它,它会持续存在这样的东西:
这应该在以后的控制器中可用:
但是,当我尝试获取消息时,它看起来好像对象为空。从我的 index.gsp 中:
所以我不知道我是否没有正确定义会话(我没有做任何特别的事情),我是否误解了会话范围的工作原理,或者其他什么。我确实在定义了对象的原始页面上看到了正确的消息,但是在任何后续页面上都没有看到它。
另外,我不确定这是否是解决此问题的正确方法;现在我真正需要的只是我需要的列表HeadOfHouseholds
(所以我可以从其他页面添加到列表中),但是我可以看到可能将其他逻辑和项目添加到这样的类中。
grails - 如何在帮助类中使用 Grails 服务
我在Grails 2.4
服务部分创建了一个服务。在控制器中,它使用依赖注入并自动初始化。我想使用来自文件夹ClassifiedService
中定义的自定义帮助程序类的相同服务。src/groovy
问题1:我应该直接调用服务如下:
如果我尝试使用 Grails 的依赖注入,如下所示,该对象始终为空。
问题2:建议为Service方法创建一个接口并使用它并用实际的类对其进行初始化?
integration-testing - Grails 2.3 集成测试表现不佳 - ServletContext 不能为空
我看过一些关于 Grails 2.3.x 和集成测试问题的帖子,但没有任何帮助我的情况,所以这里是:
我想针对真实的实时数据库 (Oracle) 测试我的 Grails 服务,因此我在 Spock 中编写了一些集成测试。无论我尝试哪种推荐的方法,我都会得到同样的错误。我希望这是一些简单而愚蠢的事情,但我担心有一个问题需要 Grails 团队解决。
这是代码,经过适当清理以消除我工作地点的任何提示:
从我读到的所有内容来看,这就是您使用 Grails 2.3 及更高版本的方式。我一直收到以下错误
任何帮助总是受到赞赏。
布赖恩
unit-testing - Grails:在另一个服务中模拟一个服务及其方法
我有以下服务:
anotherService 是在 grails resources.groovy 中定义的 bean
我想通过模拟 anotherService.send("data")对 MyMainService 中的 method1 进行单元测试
如何模拟anotherService bean 及其send()方法的返回值并注入我的MyMainServiceSpec测试类?
我正在使用 grails 2.3.8。
谢谢。