我正在尝试在服务中使用grails邮件插件。它在grails环境中工作正常(使用“grails run-app”),但是当我在独立的tomcat中部署war时,我得到了NPE。

我的配置文件:

plugins { 
   // plugins for the build system only 
    build ":tomcat:7.0.54" 
// plugins for the compile step 
compile ":scaffolding:2.1.2" 
compile ':cache:1.1.7' 
compile ":asset-pipeline:1.8.11" 
compile ":mail:1.0.7" 
compile ":quartz:1.0.2" 
compile ":quartz-monitor:1.0" 
compile ":eclipse-scripts:1.0.7" 
//runtime ":cors:1.1.6" 
 
//runtime 'org.springframework.security:spring-security-ldap:3.2.4.RELEASE' 
// plugins needed at runtime but not for compilation 
runtime ":hibernate4:4.3.5.4" // or ":hibernate:3.6.10.15" 
runtime ":database-migration:1.4.0" 
runtime ":jquery:1.11.1" 
//runtime ':db-reverse-engineer:0.5' 
compile ":jms:1.3" 
 
runtime ":resources:1.2.8" 
runtime ":cached-resources:1.0" 
runtime ":zipped-resources:1.0" 
runtime ":yui-minify-resources:0.1.5" 
compile ":cache-headers:1.1.7" 
compile ":marshallers:0.6" 

}

在服务文件中发送邮件:
log.info "using view.." 
sendMail { 
        to "${userDetails.email}" 
        subject "Your request was successfully processed." 
        html view:'/SuccessMailView',model: [title:"${req.title}",DESC:"${req.description}"] 
    } 

错误:
我再次检查了“views”文件夹下是否存在“SuccessMailView.gsp”,它在grails环境中发送邮件就很好了。
为了产生 war ,我使用了“grails dev war”,然后将文件复制到tomcat webapps目录。 Tomcat和我的grails在同一主机上,但是在不同的端口上运行。
我也试过
body( view:'/SuccessMailView',model: [title:"${req.title}",DESC:"${req.description}"]) 

但同样的错误。
java.lang.NullPointerException 
        at java.net.URI$Parser.parse(URI.java:3023) 
        at java.net.URI.<init>(URI.java:595) 
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
        at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77) 
        at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102) 
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57) 
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182) 
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190) 
        at grails.plugin.mail.MailMessageContentRenderer$PageRenderRequestCreator.createInstance(MailMessageContentRenderer.groovy:198) 
        at grails.plugin.mail.MailMessageContentRenderer$PageRenderRequestCreator$createInstance.call(Unknown Source) 
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) 
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124) 
        at grails.plugin.mail.MailMessageContentRenderer$RenderEnvironment.init(MailMessageContentRenderer.groovy:147) 
        at grails.plugin.mail.MailMessageContentRenderer$RenderEnvironment.this$2$init(MailMessageContentRenderer.groovy) 
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
        at java.lang.reflect.Method.invoke(Method.java:606) 
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:207) 
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:68) 
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) 
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112) 
        at grails.plugin.mail.MailMessageContentRenderer$RenderEnvironment.with(MailMessageContentRenderer.groovy:178) 
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
        at java.lang.reflect.Method.invoke(Method.java:606) 
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
        at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite$StaticMetaMethodSiteNoUnwrapNoCoerce.invoke(StaticMetaMethodSite.java:148) 
        at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:88) 
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) 
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128) 
        at grails.plugin.mail.MailMessageContentRenderer.render(MailMessageContentRenderer.groovy:63) 
        at grails.plugin.mail.MailMessageContentRenderer$render.call(Unknown Source) 
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) 
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 
        at grails.plugin.mail.MailMessageBuilder.doRender(MailMessageBuilder.groovy:277) 
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
        at java.lang.reflect.Method.invoke(Method.java:606) 
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:207) 
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:56) 
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49) 
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) 
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141) 
        at grails.plugin.mail.MailMessageBuilder.html(MailMessageBuilder.groovy:295) 
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
        at java.lang.reflect.Method.invoke(Method.java:606) 
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) 
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1085) 
        at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110) 
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:909) 
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:997) 
        at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110) 
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:909) 
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66) 
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49) 
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) 
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141) 

请您参考如下方法:

终于这对我有用(from another post)

   // inject the service 
   def groovyPageRenderer 
 
   def content = groovyPageRenderer.render(view: 'SuccessMailView', model: [title:"${req.title}",DESC:"${req.description}"]) 
 
        mailService.sendMail { 
            to user.email 
            from "email@test.com" 
            subject "MySubject" 
            html(content) 
        } 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!