我有一个EJB3会话bean注释@WebService(serviceName="MyServiceName", portName="MyPortName").当它部署到Weblogic 11g中时,服务端点位于
host:port/BeanClassName/MyServiceName
是否可以更改Web服务的服务端点地址?即到
host:port/my/context/root/something/MyServiceName
我尝试使用weblogic-webservices.xml部署描述符,但它需要webservices.xml描述符,该描述符需要WSDL位置元素,但是应该由服务器生成,并且它的位置在dev和prod环境中不同.
我可以使用HistoryCustomizer创建实体的历史记录
@Entity
@Customizer(MyHistoryCustomizer.class)
public class Employee {..}
Run Code Online (Sandbox Code Playgroud)
HistoryCustomizer就是这样的:
public class MyHistoryCustomizer implements DescriptorCustomizer {
public void customize(ClassDescriptor descriptor) {
HistoryPolicy policy = new HistoryPolicy();
policy.addHistoryTableName("EMPLOYEE_HIST");
policy.addStartFieldName("START_DATE");
policy.addEndFieldName("END_DATE");
descriptor.setHistoryPolicy(policy);
}
}
Run Code Online (Sandbox Code Playgroud)
可以使用"AS_OF"提示获取历史对象
javax.persistence.Query historyQuery = em
.createQuery("SELECT e FROM Employee e", Employee.class)
.setParameter("id", id)
.setHint(QueryHints.AS_OF, "yyyy/MM/dd HH:mm:ss.SSS")
.setHint(QueryHints.READ_ONLY, HintValues.TRUE)
.setHint(QueryHints.MAINTAIN_CACHE, HintValues.FALSE);
Run Code Online (Sandbox Code Playgroud)
很好但是,如果你开始访问这个历史对象引用的对象,引用的对象将是它们的实际版本.因此,去年的员工(由历史查询提取)将分配当前的地址,而不是去年曾用过的地址.
如何告诉EclipseLink(2.5.0)从过去获取相关对象?