Spring 基于注解的 SAP 连接器

Spring annotation based SAP connector

我正在尝试从基于 xml 的配置转移到 java 注释

我需要你的帮助才能让它工作:

显然我无法将 RemoteJco 接口设置到我的 SapConnector,但我该怎么做才能让这个 xml-config 正常工作?

@Bean
public RmiProxyFactoryBean jcoPool(){
    RmiProxyFactoryBean jcoPool = new RmiProxyFactoryBean();
    jcoPool.setServiceUrl("rmi://localhost/CH");
    jcoPool.setServiceInterface(RemoteJco.class);
    jcoPool.setRefreshStubOnConnectFailure(true);
    return jcoPool;
}

@Bean
public SapConnector SapConnector(){
    SapConnector sapConnector = new SapConnector();
    sapConnector.setJcoPool(jcoPool());
    return sapConnector;
}

XML-Config 中的这个工作正常:

<!-- JCO-Pool RMI Service -->
<bean id="jcoPool" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
    <property name="serviceUrl" value="rmi://localhost/CH"/>
    <property name="serviceInterface" value="com.itensis.jco.common.RemoteJco"/>
    <property name="refreshStubOnConnectFailure" value="true" />
</bean>

<bean id="SapConnector" class="com.itensis.core.SapConnector">
    <property name="jcoPool">
        <ref bean="jcoPool" />
    </property>
</bean>

这是我的 SAP 连接器

@Service
public class SapConnector {
@Autowired private RemoteJco jcoPool;


public RemoteJco getJcoPool() {
    return jcoPool;
}

public void setJcoPool(RemoteJco jcoPool) {
    this.jcoPool = jcoPool;
}
}

您必须对 jcoPool bean 进行一些更改:

@Bean
public RemoteJco jcoPool(){
    RmiProxyFactoryBean jcoPool = new RmiProxyFactoryBean();
    jcoPool.setServiceUrl("rmi://localhost/CH");
    jcoPool.setServiceInterface(RemoteJco.class);
    jcoPool.setRefreshStubOnConnectFailure(true);
    jcoPool.afterPropertiesSet();
    return (RemoteJco) jcoPool.getObject();
}

确保您的 return 值与用作服务接口的值相同 class。在 RmiProxyFacotoryBean 实例上调用 getObject 之前,您必须先调用 afterPropertiesSet()。