Tag: grails

在圆圈中查找坐标

我正在使用Grails下的Google Maps进行混搭,用户可以通过选择地图上的点和半径来创建地理围栏 。 这将存储在我的数据库中,应用程序不断从GPS设备接收一组坐标。 我想将收到的坐标与存储在圆圈中的区域进行比较。 如果该点位于圆圈内部(或外部),程序将触发一个动作。 但是,我想知道如何确定坐标是否位于圆圈内部/外部。 有一个Javascript库允许这样做,但我需要在服务器上执行此操作。 是否有Java(甚至是Groovy)库? 你会如何实现它?

使用Grails应用程序中的JNI本机库时出现UnsatisfiedLinkError

我有一个应用程序,我需要使用本机库: libfoo.so 我的代码如下: Accessor.java: public class Accessor { static { String path = “/usr/lib/libfoo.so”; System.load(path); } … } 当我在独立的tomcat服务器中部署war文件时,这非常正常。 问题是当我运行时尝试运行嵌入式tomcat服务器时: grails run-app 我得到一个UnsatisfiedLinkError: Caused by UnsatisfiedLinkError: com.foo.bar.GFS_MALJNI.new_Accessor__SWIG_0(Ljava/lang/String;I)J ->> 39 | in com.foo.bar.Accessor 有趣的是,如果我将BuildConfig.groovy文件更改为fork模式,它也可以工作。 BuildConfig.groovy: grails.project.fork = [ run: [maxMemory:1024, minMemory:64, debug:false, maxPerm:256] ] 我不想在fork模式下运行它。

Google oauth2 api客户端无法正常运行

大家好我在grails 2.3.4的控制器动作中有一些代码,它使用谷歌java客户端库来访问OAuth2 api。 但是当我创建一个GoogleAuthorizationCodeFlow实例时,我得到redirect_uri_mismatch错误。 urlgoogle给我的是这个http://localhost:60720/Callback ,而我已经在google api控制台中定义了回调url,因为这个http://localhost:8080/// 。 当我在地址栏中手动粘贴我的重定向url替换谷歌给我的那个时,我的应用程序运行良好。 我已将应用程序注册为api控制台中未安装应用程序的Web应用程序。 我能做什么? 请帮忙。 如果我无法解决这个问题,那么我将恢复到REST Api。 ResourceLocator grailsResourceLocator JsonFactory jsonFactory = JacksonFactory.defaultInstance File clientSecretsFile = grailsResourceLocator.findResourceForURI(“/configs/clientSecrets.json”).file GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(jsonFactory, new InputStreamReader(new FileInputStream(clientSecretsFile))) HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport() FileDataStoreFactory dataStoreFactory = new FileDataStoreFactory(new File(System.getProperty(“user.home”), “.store/oauth2_sample”)) List SCOPES = [“https://www.googleapis.com/auth/userinfo.profile”, “https://www.googleapis.com/auth/userinfo.email”] GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(httpTransport, jsonFactory, clientSecrets, SCOPES).setDataStoreFactory(dataStoreFactory).build() […]

Hibernate / GORM:flush()不处理集合

我在Grails应用程序中进行了集成测试,当我尝试保存Member类型的实体时失败 invitingMember.save(flush: true) 这引发了以下exception org.hibernate.AssertionFailure:在com.mycompany.member.MemberConnectionService.addOrUpdateContact(MemberConnectionService.groovy:939)中,flush()未处理集合[com.mycompany.facet.Facet.channels]。 在事务的早期,我将一个对象添加到invitingMember的集合属性中。 我的猜测是exception是在上面的行中引发的,因为只有在这一点上才会保留添加到集合中的对象。

如何更新现有Amazon S3文件的元数据?

我需要更新所有AmazonS3的Cloud Files中的缓存控制头。 但是,我无法弄清楚如何使用jclouds API。 我正在使用apache jclouds插件。 我得到了两个相关的答案: jclouds:如何更新现有blob的元数据? 使用AWS Java SDK为现有S3对象设置Expires标头 第一个答案是建议使用SwiftKey Api类,这在grails的jcloud插件中是不可用的。 第二个答案是使用AWS java sdk已经有一个grails包装插件https://grails.org/plugin/aws-sdk但它不支持元数据更新。

Java / Groovy中的Base64编码

在Java中将byte []转换为Base64字符串的正确方法是什么? 更好的是Grails / Groovy因为它告诉我不推荐使用encodeAsBase64()函数。 建议不要使用sun.misc.BASE64Encoder包,并在某些Windows平台上输出不同大小的字符串。

Grails将日期时间保存为UTC时间,但将其作为本地服务器时间读取?

我的Grails应用程序中有以下行将默认时区设置为UTC: TimeZone.setDefault(TimeZone.getTimeZone(“UTC”)) 我有一个带有dateCreated字段的Audit实体: class Audit { Date dateCreated String message } 然后我创建并保存它的一个实例: def audit = new Audit(message: “Testing audit message”) 这会将其作为UTC时间正确保存到我的数据库中。 但是,当我尝试阅读它时: audit = Audit.get(1) 时间戳将作为本地时间回读。 因此,如果我的时区是+1 UTC并且当前本地时间是BST的 12:34:56 ,那么将保存到数据库的是11:34:56 ,但是当我读回它时,它变为11:34:56 BST 。 有没有人知道如何解决这个问题,以便Grails将时间戳读回UTC并相应地转换它?

图像在Grails中resize

我正在使用Grails开发Web专辑并进行图像处理,我使用的是grails-image-tools插件。 如果上传的图像尺寸太大(例如:超过600 * 840),我需要一种function来调整图像大小。 在这种情况下,我需要将此图像的大小调整为600 * 840)。 最有效的方法是什么? 非常感谢。

将Grails静态’mapping’属性重载到数据库对象上的是否会违反DRY?

Grails在Domain类中的静态“映射”属性是否违反了DRY? 我们来看看规范域类: class Book { 很长的身份 字符串标题 String isbn 发布日期 作者 静态映射= { id generator:’hilo’,params:[table:’hi_value’,column:’next_value’,max_lo:100] } } 要么: class Book {… 静态映射= { id(generator:’sequence’,params:[sequence_name:“book_seq”]) } } 让我们说,继续这个想法,我将我的Grails应用程序与HSQLDB或MySQL一起工作,但IT部门说我必须使用商业软件包(由加利福尼亚州Redwood Shores的一家大公司编写)。 这种变化是否会使我的Web应用程序在开发和测试环境中瘫痪? 例如,MySQL支持主键列上的自动增量,但支持序列对象。 是否有一种更简洁的方法来实现这种“仅在生产模式下”而不加载域类?

Grails中的映像byte 到response.outputStream导致“响应提交后无法转发”

在我的Grails控制器中,我有一个像byte []的图像。 我想将此byte []直接写入response.outputStream 我使用以下代码来做到这一点: def getImage() { def attachment = Attachment.get(params.id) def imageByteArray = // some byte image from attachment (is a jpg image) withCacheHeaders { etag { if (imageByteArray) “${imageByteArray}”.encodeAsSHA1() else “${new Date()}”.encodeAsSHA1() } delegate.lastModified { if(imageByteArray) { attachment.lastUpdated ?: 0 } } generate { response.setContentType(“image/jpeg”) response.setHeader(“Content-disposition”, “filename=\”${imageName}${imageExtension}\””) response.setContentLength(imageByteArray.size()) def outputStream = null […]