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.dirs>
                 </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






Reply via email to