On Thursday 03 March 2011 12:59:08 AM Jason Pell wrote:
> The classes from jaxb facets are copied into a copy of the source for
> jaxb-API and jaxb-ri. The javax into the API and the com into the ri. The
> SchemaGenerator class has been enhanced by the jaxb-facets dev and
> replaces the existing one. It's a matter of building the jaxb-API copying
> the new jar into the Ri and rebuilding that. Then the jaxb api an ri are
> deployed to nexus with a custom version (so as not to clash)
> 
> It's nasty as hell but with this done the schema is generated with the
> additional checks and Cxf schema validation works flawlessly with them.

I guess my question is:

Why do you need to stick your new annotations into the 
javax.xml.bind.annotation package?  

Once you do that, it would REQUIRE a new version of JAXB which would take all 
kinds of time and votes and all kinds of junk.    A vendor implementation of 
JAXB is free to add new annotations, just not in that package.   For example, 
the eclipselink Moxy folks have added a bunch of annotations to JAXB, but they 
are in their own package. 

Thus, my suggestion would be to move those new annotations to 
com.sun.xml.bind.annotations
or similar and then you would just need the jaxb-impl replacement.      No 
endorsing or anything outside of the normal.  

Dan


> 
> 
> Sent from my iPhone
> 
> On Mar 3, 2011, at 15:40, "Jason Chaffee" <[email protected]> wrote:
> > Good stuff, Jason.
> > 
> > When I am not mobile I would to ask a couple of questions on how it plugs
> > into jaxb
> > 
> > Sent from my iPhone
> > 
> > On Mar 2, 2011, at 8:09 PM, "Jason Pell" <[email protected]> wrote:
> >> Ok and now I have updated my maven build so I don't need the endorsed
> >> directory at all.
> >> 
> >> The only outstanding issue is that if you try and open projects in
> >> eclipse that use these enhanced annotations eclipse will report
> >> errors.  To fix this you will need to have the jars in your
> >> jre/lib/endorsed on your developer machine
> >> 
> >> You build machine and operational env do not need them.
> >> 
> >> For what its worth this is how I did it.  I put this in the parent
> >> pom.xml file.
> >> 
> >> <build>
> >> 
> >>       <pluginManagement>
> >>       
> >>           <plugins>
> >>           
> >>            <plugin>
> >>            
> >>               <groupId>org.apache.maven.plugins</groupId>
> >>               <artifactId>maven-dependency-plugin</artifactId>
> >>               <version>2.1</version>
> >>               <configuration>
> >>               
> >>                   <outputDirectory>${project.build.directory}/endorsed</
> >>                   outputDirectory>
> >>               
> >>               </configuration>
> >>               <executions>
> >>               
> >>                 <execution>
> >>                 
> >>                   <id>copy-endorsed</id>
> >>                   <phase>generate-sources</phase>
> >>                   <goals>
> >>                   
> >>                     <goal>copy</goal>
> >>                   
> >>                   </goals>
> >>                   <configuration>
> >>                   
> >>                     <artifactItems>
> >>                     
> >>                       <artifactItem>
> >>                       
> >>                           <groupId>javax.xml.bind</groupId>
> >>                           <artifactId>jaxb-api</artifactId>
> >>                           <version>2.2.1-custom</version>
> >>                           <overWrite>true</overWrite>
> >>                           <destFileName>jaxb-api.jar</destFileName>
> >>                       
> >>                       </artifactItem>
> >>                       
> >>                       <artifactItem>
> >>                       
> >>                           <groupId>javax.xml.ws</groupId>
> >>                           
> >>                             <artifactId>jaxws-api</artifactId>
> >>                             <version>2.2.1</version>
> >>                           
> >>                           <overWrite>true</overWrite>
> >>                           <destFileName>jaxws-api.jar</destFileName>
> >>                       
> >>                       </artifactItem>
> >>                     
> >>                     </artifactItems>
> >>                   
> >>                   </configuration>
> >>                 
> >>                 </execution>
> >>               
> >>               </executions>
> >>             
> >>             </plugin>
> >>           
> >>           </plugins>
> >>       
> >>       </pluginManagement>
> >>       
> >>       <plugins>
> >>       
> >>             <plugin>
> >>             
> >>                  <groupId>org.apache.maven.plugins</groupId>
> >>                  <artifactId>maven-compiler-plugin</artifactId>
> >>                  <configuration>
> >>                  
> >>                    <compilerArguments>
> >>                    
> >>                      <endorseddirs>${project.build.directory}/endorsed</
> >>                      endorseddirs>
> >>                    
> >>                    </compilerArguments>
> >>                  
> >>                  </configuration>
> >>            
> >>            </plugin>
> >>           
> >>           <plugin>
> >>           
> >>               <groupId>org.apache.maven.plugins</groupId>
> >>               <artifactId>maven-surefire-plugin</artifactId>
> >>               <configuration>
> >>               
> >>                 <systemPropertyVariables>
> >> 
> >> <java.endorsed.dirs>${project.build.directory}/endorsed</java.endorsed.d
> >> irs>
> >> 
> >>                 </systemPropertyVariables>
> >>               
> >>               </configuration>
> >>             
> >>             </plugin>
> >>       
> >>       </plugins>
> >>   
> >>   </build>
> >> 
> >> And this in the particular projects where I needed to use the jaxb or
> >> jaxws annotations that are not in 2.1
> >> 
> >> <build>
> >> 
> >>       <plugins>
> >>       
> >>           <plugin>
> >>           
> >>               <artifactId>maven-dependency-plugin</artifactId>
> >>           
> >>           </plugin>
> >>       
> >>       </plugins>
> >>   
> >>   </build>
> >> 
> >> I am done now :-)
> >> 
> >> Cheers
> >> Jason
> >> 
> >> On Thu, Mar 3, 2011 at 1:24 PM, Jason Pell <[email protected]> wrote:
> >>> Yep confirmed it - it just requires the endorsed jars for building,
> >>> not for runtime.  My operational
> >>> environments have had their endorsed dirs blown away and still running
> >>> nicely.  My build server
> >>> still requires the jars.
> >>> 
> >>> On Thu, Mar 3, 2011 at 12:51 PM, Jason Pell <[email protected]> wrote:
> >>>> Hi,
> >>>> 
> >>>> I decided I was curious enough to see if it would work without having
> >>>> to change the endorsed directory.
> >>>> 
> >>>> I deleted the jars out of the endorsed directory and started up my
> >>>> application again and executed a web service which uses both jaxws
> >>>> 2.2.1 and jaxb 2.2 + facets stuff and it started up perfectly fine
> >>>> WITHOUT an endorsed directory.  What it looks like for me is that when
> >>>> you compile the code you will probably need these jars in the endorsed
> >>>> directory.  But as long as at runtime you have them in the classpath
> >>>> it works fine.
> >>>> 
> >>>> Does that sound correct to others? Thats certainly my experience.
> >>>> 
> >>>> Thanks
> >>>> Jason
> >>>> 
> >>>> On Thu, Mar 3, 2011 at 12:11 PM, Jason Pell <[email protected]> wrote:
> >>>>> Hi,
> >>>>> 
> >>>>> I did not try too hard to avoid putting it into the endorsed
> >>>>> directory.
> >>>>> 
> >>>>> However it occurs to me that if you are using JDK 6, you already have
> >>>>> that problem using JAXB 2.2 anyway as JDK 6 uses JAXB 2.1.  If there
> >>>>> is a way to use JAXB 2.2 in CXF without putting jars into the
> >>>>> endorsed directory then the same can apply to the jaxb-facets
> >>>>> enhanced jaxb-api.
> >>>>> 
> >>>>> One way would be to define the endorsed dirs system property instead
> >>>>> and point it to a directory within your application.  I have not even
> >>>>> looked at this as we can modify the JRE and it was easier to do that.
> >>>>> 
> >>>>> Cheers
> >>>>> Jason
> >>>>> 
> >>>>> On Thu, Mar 3, 2011 at 11:13 AM, Jason Chaffee <[email protected]> 
wrote:
> >>>>>> This is exactly what we wanting, except it doesn't seem to support
> >>>>>> key restrictions...but it does support other constraints.  However,
> >>>>>> I cannot add any jars to the endorsed directory do to some
> >>>>>> operational constraints so it won't help me much, but it is still
> >>>>>> nice to know.
> >>>>>> 
> >>>>>> Jason
> >>>>>> 
> >>>>>> 
> >>>>>> -----Original Message-----
> >>>>>> From: [email protected] on behalf of Jason Pell
> >>>>>> Sent: Wed 3/2/2011 2:53 PM
> >>>>>> To: [email protected]
> >>>>>> Cc: Hannes Holtzhausen; Jason Chaffee; Daniel Kulp
> >>>>>> Subject: Re: JAXB: Any way to incorporate restrictions into
> >>>>>> annotations?
> >>>>>> 
> >>>>>> Hi,
> >>>>>> 
> >>>>>> I am using jaxb-facets with CXF and it works very nicely.
> >>>>>> 
> >>>>>> http://www.infosys.tuwien.ac.at/staff/hummer/tools/jaxb-facets.html
> >>>>>> http://java.net/projects/jaxb/lists/dev/archive/2011-02/message/0
> >>>>>> 
> >>>>>> I did have to hack jaxb-api and jaxb-impl and put the hacked
> >>>>>> jaxb-api into jre/lib/endorsed and override the
> >>>>>> impl in CXF, but it works so well I was surprised.  I have since
> >>>>>> added Date and Datetime validation and at some
> >>>>>> point will need to add Decimal as well.
> >>>>>> 
> >>>>>> If you want to get hold of my updated jaxb-api and jaxb-impl let me
> >>>>>> know.  I can provide my enhancements to the original code from
> >>>>>> [email protected]
> >>>>>> 
> >>>>>> Its a real hack but it does exactly what I need and I have done it
> >>>>>> in such a way that if at some point its built into jaxb I can back
> >>>>>> out my changes
> >>>>>> and make use of the core release again.
> >>>>>> 
> >>>>>> Cheers
> >>>>>> Jason
> >>>>>> 
> >>>>>> On Wed, Mar 2, 2011 at 4:09 PM, Hannes Holtzhausen
> >>>>>> 
> >>>>>> <[email protected]> wrote:
> >>>>>>> Have a look at XMLBeans If you are looking for an XML binding
> >>>>>>> technology that supports the
> >>>>>>> full XSD spec but still provides a Java bean style API for
> >>>>>>> accessing and generating the XML.
> >>>>>>> 
> >>>>>>> This is also not a 100% code first approach, you need to start with
> >>>>>>> an XSD to generate XMLBeans.
> >>>>>>> But you can do a code first web service once you have generated the
> >>>>>>> XMLBeans.
> >>>>>>> 
> >>>>>>> http://cxf.apache.org/docs/xmlbeans.html
> >>>>>>> http://xmlbeans.apache.org/
> >>>>>>> 
> >>>>>>> Cheers
> >>>>>>> Hannes

-- 
Daniel Kulp
[email protected]
http://dankulp.com/blog
Talend - http://www.talend.com

Reply via email to