我谦卑地一步一步地请求你的帮助。
我正在开发一个由apache maven管理的项目。 该项目有几个子模块
/pom.xml
/model/pom.xml
/server/pom.xml
/client/ws/pom.xml
/client/vaadin/pom.xml
vaadin取决于ws
“model”项目我有手写的域类,使用JPA和XML注释进行注释。示例如下:
package com.example.domain.auth;
@Entity
@XmlType(name = "User", namespace = "auth.domain.example.com")
@XmlAccessorType(javax.xml.bind.annotation.XmlAccessType.FIELD)
public class User implements Serializable {
@NotNull
private String username;
@NotNull
private String password;
@Temporal(value = TemporalType.DATE)
private java.util.Date accountExpirationDate;
public void veryComplexAction() { ... }
// getters & setters
}
“server”项目托管了几个使用域类作为输入和返回类型的Web服务。
项目建设由maven共同完成。 (wsgen& wsimport of wsdls using relative paths)
我无法访问XSD文件(我做的却是),因为它们是在“服务器”项目执行wsgen插件时生成的,并且生成了(半随机)名称,这些名称可能会在开发过程中发生变化,因为它们是'由wsgen生成。
既然我可以访问我的模型项目,我想在“ws”和“vaadin”项目中使用它,而不需要使用生成的模型,这些模型没有我在“模型”项目中实现的方法
我发现我需要使用“episode”文件来指示jaxb编译器跳过生成域类。
事情是我无法让它工作,因为每个人都提供XSD已经可用的示例,在我的项目中,在构建过程中生成该文件,并且下一版本中的文件“UserService_schema1.xsd”的内容可以在文件“UserService_schemaN”中。 XSD”。
可接受的解决方案:
我想获得(可能不仅仅是我)的示例项目或分步教程,介绍如何在web服务客户端项目中重用现有域模型,该项目作为maven项目的子模块进行管理。它可以是一个类,接口,枚举。只是简单的POJO演示如何配置所有内容。
我已经检查了什么:
http://stackoverflow.com/questions/11745465/jaxb-my-own-domain-model-and-suggestions
http://stackoverflow.com/questions/15907973/how-to-remove-auto-generated-classes-in-jax-ws-clients/16007685#16007685
http://jamablog.blogspot.com/2007/08/how-to-make-jax-ws-client-to-reuse.html
http://jamablog.blogspot.com/2007/08/how-to-make-jax-ws-client-reuse.html
http://sr-it.eu/wordpress/?p=135
http://metro.1045641.n5.nabble.com/Reusing-entity-classes-with-JAX-WS-bottom-up-td1061083.html
答案 0 :(得分:0)
我们有类似的设置。我们使用eclipse链接和apache cxf以及jaxws。我们不生成客户端模型。我们正在使用现有的域对象。 EclipseLink可帮助您在XML文件中注释域对象。由于我们的域对象位于单独的jar中,因此我们不会对域对象进行注释,而是使用ws项目中的xml文件来指定如何解释域对象。
我没有把它放在一起所以无法为您提供一步一步的说明。