Spring HttpInvokerServiceExporter:Linux 上的反序列化属性对象未完成
Spring HttpInvokerServiceExporter: Deserialized Attribute Objects not complete on Linux
我正在使用 Spring 4.0.4
并使用 Spring 中的 HttpInvoker
来更新不同应用程序的对象,这些应用程序通常 运行 在同一个 Tomcat .
问题是,作为自定义对象的属性在远程站点上仅包含 unique Id
而没有其他参数(例如名称)。
我必须先说,这个问题只出现在 Linux,而不是 Windows 系统上。这意味着,配置不能错。
配置非常简单,基于 Spring 文档 (http://docs.spring.io/spring/docs/current/spring-framework-reference/html/remoting.html)。
<bean id="applicationRemoteService" class="com.commitpro.apps.usermgmt.ws.application.ApplicationRemoteServiceImpl" />
<bean name="applicationExporter" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="service" ref="applicationRemoteService"/>
<property name="serviceInterface" value="com.commitpro.apps.humnet.base.ws.application.ApplicationRemoteServiceI"/>
</bean>
客户端配置如下:
<bean id="applicationRemoteService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl" ref="applicationServiceUrl" />
<property name="serviceInterface" value="com.commitpro.apps.humnet.base.ws.application.ApplicationRemoteServiceI" />
</bean>
ApplicationRemoteServiceImpl
的方法如下所示:
public void saveDepartmentToApplication(ApplicationE application, Department department) throws Exception {...}
department
实例只有一个 id
(int),但不幸的是字符串 name
为空。与 location
和 divisionSet
相同,它们是部门的成员。
Department 对象如下所示:
public class Department extends DivisionBaseA<Department> {
private static final long serialVersionUID = -6170085791318124502L;
private int id;
private Location location;
private Set<Division> divisionSet = new TreeSet<Division>();
DivisionBaseA:
public abstract class DivisionBaseA<E> implements Serializable, Comparable<E> {
private static final long serialVersionUID = 4028530780182033960L;
private String name, description;
private boolean active = true;
跟连载有关系吗? Windows 和 Linux 系统有区别吗?
我已将 Spring 更新为 4.2。2.RELEASE 现在可以使用了。
我正在使用 Spring 4.0.4
并使用 Spring 中的 HttpInvoker
来更新不同应用程序的对象,这些应用程序通常 运行 在同一个 Tomcat .
问题是,作为自定义对象的属性在远程站点上仅包含 unique Id
而没有其他参数(例如名称)。
我必须先说,这个问题只出现在 Linux,而不是 Windows 系统上。这意味着,配置不能错。
配置非常简单,基于 Spring 文档 (http://docs.spring.io/spring/docs/current/spring-framework-reference/html/remoting.html)。
<bean id="applicationRemoteService" class="com.commitpro.apps.usermgmt.ws.application.ApplicationRemoteServiceImpl" />
<bean name="applicationExporter" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="service" ref="applicationRemoteService"/>
<property name="serviceInterface" value="com.commitpro.apps.humnet.base.ws.application.ApplicationRemoteServiceI"/>
</bean>
客户端配置如下:
<bean id="applicationRemoteService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl" ref="applicationServiceUrl" />
<property name="serviceInterface" value="com.commitpro.apps.humnet.base.ws.application.ApplicationRemoteServiceI" />
</bean>
ApplicationRemoteServiceImpl
的方法如下所示:
public void saveDepartmentToApplication(ApplicationE application, Department department) throws Exception {...}
department
实例只有一个 id
(int),但不幸的是字符串 name
为空。与 location
和 divisionSet
相同,它们是部门的成员。
Department 对象如下所示:
public class Department extends DivisionBaseA<Department> {
private static final long serialVersionUID = -6170085791318124502L;
private int id;
private Location location;
private Set<Division> divisionSet = new TreeSet<Division>();
DivisionBaseA:
public abstract class DivisionBaseA<E> implements Serializable, Comparable<E> {
private static final long serialVersionUID = 4028530780182033960L;
private String name, description;
private boolean active = true;
跟连载有关系吗? Windows 和 Linux 系统有区别吗?
我已将 Spring 更新为 4.2。2.RELEASE 现在可以使用了。