gpt4 book ai didi

java - 刷新 Grails applicationContext

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:18:02 26 4
gpt4 key购买 nike

在我配置的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com