纯Java和Grails之间的反射差异
我正在使用公司内部开发的一组API与组织中的一些公共中央服务进行通信。可以通过运行时配置动态配置API,以根据系统需要使用多个传输协议 内部API集合耦合到IBM WebService ThincClient.jar,以配置和调用所有必要的web服务。我让独立原型顺利工作,但需要将功能集成到Grails中正在开发的其他几个服务中 这就是事情破裂的地方。在我编写的代码中,我们只需调用一个工厂方法,并使用它来获得一个客户机会话,然后继续我们的业务逻辑。简单。通过使用调试器并深入研究API纯Java和Grails之间的反射差异,java,grails,reflection,soap,Java,Grails,Reflection,Soap,我正在使用公司内部开发的一组API与组织中的一些公共中央服务进行通信。可以通过运行时配置动态配置API,以根据系统需要使用多个传输协议 内部API集合耦合到IBM WebService ThincClient.jar,以配置和调用所有必要的web服务。我让独立原型顺利工作,但需要将功能集成到Grails中正在开发的其他几个服务中 这就是事情破裂的地方。在我编写的代码中,我们只需调用一个工厂方法,并使用它来获得一个客户机会话,然后继续我们的业务逻辑。简单。通过使用调试器并深入研究APIgetCli
getClient()
调用,我可以看到这将获得一个通用传输配置,然后将其绑定到SOAP传输配置。从这里开始,路径就不同了,它是纯独立Java服务还是运行在Grails应用程序中的服务
- 在纯Java单机版中,这将绑定到
com.ibm.ws.webservice.engine.client.Service
方法被调用,事情按预期进行initService()
- 在Grails应用程序中,包含相同的Java代码,位置相同
在代码中调用
然后在 在spring-loaded API中来回运行了很多次,最后抛出了一个 java.lang.reflect.InvocationTargetExceptioncom.springsource.load.ri.reflectiveIntercept
-noreloading
选项,Grails服务将按预期运行
grails -noreloading run-app
这就阻止了Grails/IDEA离开钩子来动态地重新加载类
对于这是Grails中的bug还是SpringSource加载程序类中的bug,您有什么想法吗?当您无意中找到答案时,很容易…;-)
如果我在IDEA中将运行配置设置为使用-noreloading
选项,Grails服务将按预期运行
grails -noreloading run-app
这就阻止了Grails/IDEA离开钩子来动态地重新加载类
对于这是Grails中的bug还是SpringSource加载程序类中的bug,有什么想法吗