java - 刷新 Grails applicationContext

原文 标签 java spring grails

在我的配置的 spring/resources.xml 文件中,我定义了一个这样的 bean:

<bean id="myService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
    <property name="serviceUrl" value="http://${remote.host}:8080/MyAgent/remoting/MyService"/>
    <property name="serviceInterface" value="services.MyService"/>
</bean>

在我的 Config.groovy 文件中,我有:
remote.host = "someipaddress"

现在我想在运行时更改这个占位符的值。在常规的 spring 应用程序中,我通过 PropertyPlaceHolderConfigurer 执行此操作,然后刷新上下文并且它可以工作。

在 Grails 中,如何刷新上下文?

问候,

菲利普

最佳答案

好的,我放弃了令人耳目一新的方法。
作为一种解决方法,我创建了一个如下所示的 grails 服务:

class myService {
    def myRemoteService
    static transactional = false

    private MyRemoteService getService(String remoteServiceURL) {
        HessianProxyFactory factory = new HessianProxyFactory();
        try {
            return (MyRemoteService) factory.create(MyRemoteService.class, url);
        }
        catch (MalformedURLException e) {
            e.printStackTrace()
        }
        return null
    }

    def someRemoteMethod(String remoteServiceURL) {
        getService(remoteServiceURL).myRemoteMethod()
    }
}

这使我可以动态地调用任何远程机器上的远程服务。

我仍然对更清洁的解决方案感兴趣,因为这使我为每个远程方法重写了一个包装器方法:-S

关于java - 刷新 Grails applicationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4280056/

相关文章:

java - 管道中的限制(长)差异顺序

java - 如何在Java中的代理服务器上缓存HTTP请求?

java - 带注释的 bean 配置没有从 XML 配置中看到 bean

spring - 是否有与 Spring MVC 兼容的 UI 框架?

mongodb - 在 Grails 和 CloudBees 中使用 MongoDB

unit-testing - 在Grails服务中测试标准创建

mysql - 在mysql中更改 Joda Time (如PT1000S)的顺序

java - 深度克隆实用程序推荐

java - native 查询抛出 InvalidDataAccessApiUsageException

java - 位操作性能 : masking or shifting