i have implemented moxy classes in project. dont want moxy default existing classes. problem facing moxy being used other existing classes. how can avoid this?
i have made sure jaxb.properties in same package classes want used for, , there no other class in that. package structure this:
package :com.entity.a com.entity.b com.entity.c com.entity.d com.entity.d.moxy.
jaxb.properties present in com.entity.d.moxy , classes in com.entity.d.moxy should use it. classes picking moxy , causing exceptions.
could help?
the jaxbcontext
returned come single provider. below demonstrate how provider determined example.
package #1 - forum17649220.foo
jaxb.properties
this package contains jaxb.properties
file following entry indicating moxy jaxb provider (see: http://blog.bdoughan.com/2011/05/specifying-eclipselink-moxy-as-your.html).
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.jaxbcontextfactory
foo
foo
contains reference bar
. means no matter how jaxbcontext
created when foo
processed metadata created bar
.
package forum17649220.foo; import forum17649220.bar.bar; public class foo { public bar bar; }
jaxb.index
jaxb implementations not package scanning. jaxb.index
file can used enable creation of jaxbcontext
package name.
foo
package #2 - forum17649220.bar
bar
bar
contains reference foo
. means no matter how jaxbcontext
created when bar
processed metadata created foo
.
package forum17649220.bar; import forum17649220.foo.foo; public class bar { public foo foo; }
jaxb.index
bar
demo code
we create instances of jaxbcontext
few different ways see picked jaxb provider. note since foo
, bar
have references each other metadata both classes processed regardless of jaxb provider used.
demo
package forum17649220; import javax.xml.bind.jaxbcontext; import forum17649220.bar.bar; import forum17649220.foo.foo; public class demo { public static void main(string[] args) throws exception { system.out.println(jaxbcontext.newinstance("forum17649220.foo").getclass()); system.out.println(jaxbcontext.newinstance("forum17649220.foo:forum17649220.bar").getclass()); system.out.println(jaxbcontext.newinstance("forum17649220.bar").getclass()); system.out.println(jaxbcontext.newinstance(foo.class).getclass()); system.out.println(jaxbcontext.newinstance(foo.class, bar.class).getclass()); system.out.println(jaxbcontext.newinstance(bar.class).getclass()); } }
output
we can see input whenever forum17649220.foo
package or class package included when creating jaxbcontext
moxy provider because of jaxb.properties
file.
class org.eclipse.persistence.jaxb.jaxbcontext class org.eclipse.persistence.jaxb.jaxbcontext class com.sun.xml.bind.v2.runtime.jaxbcontextimpl class org.eclipse.persistence.jaxb.jaxbcontext class org.eclipse.persistence.jaxb.jaxbcontext class com.sun.xml.bind.v2.runtime.jaxbcontextimpl
Comments
Post a Comment