Ok, let's retry :D
I wanted to say, with Server Events (@Observes), you can maybe also add
some configuration.

JLouis


2014-02-17 14:44 GMT+01:00 Jean-Louis MONTEIRO <[email protected]>:

> but +1 with Romain.
>
> JLouis
>
>
> 2014-02-17 14:43 GMT+01:00 Jean-Louis MONTEIRO <[email protected]>:
>
> With even it's even simpler I guess.
>>
>> JLouis
>>
>>
>> 2014-02-17 14:33 GMT+01:00 Romain Manni-Bucau <[email protected]>:
>>
>> Hi Andy
>>>
>>> please revert it since it was the first version of the code we had in
>>> tomee jaxrs integration and needed to be refactored to match real
>>> needs. If your issue is with wadl generator please do something
>>> specific to wadlgenerator in configureFactory (if provider instanceof
>>> wadlgenerator replace cxf one or sthg like that)
>>>
>>>
>>>
>>> Romain Manni-Bucau
>>> Twitter: @rmannibucau
>>> Blog: http://rmannibucau.wordpress.com/
>>> LinkedIn: http://fr.linkedin.com/in/rmannibucau
>>> Github: https://github.com/rmannibucau
>>>
>>>
>>>
>>>
>>> ---------- Forwarded message ----------
>>> From:  <[email protected]>
>>> Date: 2014-02-17 14:12 GMT+01:00
>>> Subject: svn commit: r1568973 - in /tomee/tomee/trunk:
>>>
>>> server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
>>>
>>> tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
>>> To: [email protected]
>>>
>>>
>>> Author: andygumbrecht
>>> Date: Mon Feb 17 13:12:50 2014
>>> New Revision: 1568973
>>>
>>> URL: http://svn.apache.org/r1568973
>>> Log:
>>> Visit https://issues.apache.org/jira/browse/TOMEE-1126.
>>> Synchronization.
>>>
>>> Modified:
>>>
>>> tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
>>>
>>> tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
>>>
>>> Modified:
>>> tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
>>> URL:
>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java?rev=1568973&r1=1568972&r2=1568973&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
>>> (original)
>>> +++
>>> tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
>>> Mon Feb 17 13:12:50 2014
>>> @@ -79,7 +79,15 @@ import java.lang.annotation.Annotation;
>>>  import java.lang.reflect.Constructor;
>>>  import java.net.HttpURLConnection;
>>>  import java.net.URL;
>>> -import java.util.*;
>>> +import java.util.ArrayList;
>>> +import java.util.Arrays;
>>> +import java.util.Collection;
>>> +import java.util.Collections;
>>> +import java.util.HashMap;
>>> +import java.util.HashSet;
>>> +import java.util.List;
>>> +import java.util.Map;
>>> +import java.util.Set;
>>>  import java.util.concurrent.CopyOnWriteArrayList;
>>>  import java.util.logging.Level;
>>>  import java.util.regex.Pattern;
>>> @@ -120,7 +128,22 @@ public class CxfRsHttpListener implement
>>>          STATIC_CONTENT_TYPES.put("pdf", "application/pdf");
>>>          STATIC_CONTENT_TYPES.put("xsd", "application/xml");
>>>
>>> -        for (final ProviderInfo<RequestHandler> rh :
>>>
>>> org.apache.cxf.jaxrs.provider.ProviderFactory.getSharedInstance().getRequestHandlers())
>>> {
>>> +        final String clazz =
>>> SystemInstance.get().getProperty("openejb.cxf-rs.provider.classes",
>>> "default");
>>> +        final org.apache.cxf.jaxrs.provider.ProviderFactory factory =
>>> org.apache.cxf.jaxrs.provider.ProviderFactory.getSharedInstance();
>>> +
>>> +        if (!"default".equals(clazz)) {
>>> +
>>> +            final String[] classes = clazz.split(",");
>>> +            for (final String aClass : classes) {
>>> +                try {
>>> +
>>>
>>> factory.setUserProviders(Arrays.asList(Class.forName(clazz).newInstance()));
>>> +                } catch (final Exception e) {
>>> +                    LOGGER.warning("Failed to load class: " + clazz +
>>> " - " + e.getMessage());
>>> +                }
>>> +            }
>>> +        }
>>> +
>>> +        for (final ProviderInfo<RequestHandler> rh :
>>> factory.getRequestHandlers()) {
>>>              final RequestHandler provider = rh.getProvider();
>>>              if (WadlGenerator.class.isInstance(provider)) {
>>>                  final WadlGenerator wadlGenerator =
>>> WadlGenerator.class.cast(provider);
>>>
>>> Modified:
>>> tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
>>> URL:
>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java?rev=1568973&r1=1568972&r2=1568973&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
>>> (original)
>>> +++
>>> tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
>>> Mon Feb 17 13:12:50 2014
>>> @@ -31,6 +31,7 @@ import org.apache.tomee.loader.TomcatHel
>>>  import java.io.IOException;
>>>  import java.lang.reflect.Field;
>>>  import java.util.Properties;
>>> +import java.util.concurrent.atomic.AtomicBoolean;
>>>  import java.util.logging.Level;
>>>  import java.util.logging.Logger;
>>>
>>> @@ -39,96 +40,99 @@ import java.util.logging.Logger;
>>>  public class ServerListener implements LifecycleListener {
>>>      private static final Logger LOGGER =
>>> Logger.getLogger(ServerListener.class.getName());
>>>
>>> -    static private boolean listenerInstalled;
>>> +    static private final AtomicBoolean listenerInstalled = new
>>> AtomicBoolean(false);
>>>
>>> -    public void lifecycleEvent(LifecycleEvent event) {
>>> +    public void lifecycleEvent(final LifecycleEvent event) {
>>>          if (Lifecycle.BEFORE_INIT_EVENT.equals(event.getType()) &&
>>> StandardServer.class.isInstance(event.getSource())) {
>>>              installServerInfo();
>>>          }
>>>
>>> -        // only install once
>>> -        if (listenerInstalled ||
>>> !Lifecycle.AFTER_INIT_EVENT.equals(event.getType())) return;
>>> -        if (!(event.getSource() instanceof StandardServer)) return;
>>> +        synchronized (listenerInstalled) {
>>>
>>> -        try {
>>> -            final StandardServer server = (StandardServer)
>>> event.getSource();
>>> -
>>> -            TomcatHelper.setServer(server);
>>> -
>>> -            final Properties properties = new Properties();
>>> -
>>>  System.getProperties().setProperty("openejb.embedder.source",
>>> getClass().getSimpleName());
>>> -            properties.setProperty("openejb.embedder.source",
>>> getClass().getSimpleName());
>>> +            // only install once
>>> +            if (listenerInstalled.get() ||
>>> !Lifecycle.AFTER_INIT_EVENT.equals(event.getType())) return;
>>> +            if (!(event.getSource() instanceof StandardServer)) return;
>>>
>>> +            try {
>>> +                final StandardServer server = (StandardServer)
>>> event.getSource();
>>>
>>> -            // if SystemInstance is already initialized, then return
>>> -            if (SystemInstance.isInitialized()) {
>>> -                return;
>>> -            }
>>> -
>>> -            // set the openejb.loader property to tomcat-system
>>> -            properties.setProperty("openejb.loader", "tomcat-system");
>>> -
>>> -            // Get the value of catalina.home and set it to openejb.home
>>> -            String catalinaHome = System.getProperty("catalina.home");
>>> -            properties.setProperty("openejb.home", catalinaHome);
>>> +                TomcatHelper.setServer(server);
>>>
>>> -            //Sets system property for openejb.home
>>> -            System.setProperty("openejb.home", catalinaHome);
>>> +                final Properties properties = new Properties();
>>> +
>>> System.getProperties().setProperty("openejb.embedder.source",
>>> getClass().getSimpleName());
>>> +                properties.setProperty("openejb.embedder.source",
>>> getClass().getSimpleName());
>>>
>>> -            //get the value of catalina.base and set it to openejb.base
>>> -            String catalinaBase = System.getProperty("catalina.base");
>>> -            properties.setProperty("openejb.base", catalinaBase);
>>>
>>> -            //Sets system property for openejb.base
>>> -            System.setProperty("openejb.base", catalinaBase);
>>> +                // if SystemInstance is already initialized, then return
>>> +                if (SystemInstance.isInitialized()) {
>>> +                    return;
>>> +                }
>>>
>>> +                // set the openejb.loader property to tomcat-system
>>> +                properties.setProperty("openejb.loader",
>>> "tomcat-system");
>>>
>>> -            // System.setProperty("tomcat.version", "x.y.z.w");
>>> -            // System.setProperty("tomcat.built", "mmm dd yyyy
>>> hh:mm:ss");
>>> -            // set the System properties, tomcat.version, tomcat.built
>>> -            try {
>>> -                ClassLoader classLoader =
>>> ServerListener.class.getClassLoader();
>>> -                Properties tomcatServerInfo =
>>>
>>> IO.readProperties(classLoader.getResourceAsStream("org/apache/catalina/util/ServerInfo.properties"),
>>> new Properties());
>>> +                // Get the value of catalina.home and set it to
>>> openejb.home
>>> +                final String catalinaHome =
>>> System.getProperty("catalina.home");
>>> +                properties.setProperty("openejb.home", catalinaHome);
>>> +
>>> +                //Sets system property for openejb.home
>>> +                System.setProperty("openejb.home", catalinaHome);
>>> +
>>> +                //get the value of catalina.base and set it to
>>> openejb.base
>>> +                final String catalinaBase =
>>> System.getProperty("catalina.base");
>>> +                properties.setProperty("openejb.base", catalinaBase);
>>> +
>>> +                //Sets system property for openejb.base
>>> +                System.setProperty("openejb.base", catalinaBase);
>>> +
>>> +
>>> +                // System.setProperty("tomcat.version", "x.y.z.w");
>>> +                // System.setProperty("tomcat.built", "mmm dd yyyy
>>> hh:mm:ss");
>>> +                // set the System properties, tomcat.version,
>>> tomcat.built
>>> +                try {
>>> +                    final ClassLoader classLoader =
>>> ServerListener.class.getClassLoader();
>>> +                    final Properties tomcatServerInfo =
>>>
>>> IO.readProperties(classLoader.getResourceAsStream("org/apache/catalina/util/ServerInfo.properties"),
>>> new Properties());
>>> +
>>> +                    String serverNumber =
>>> tomcatServerInfo.getProperty("server.number");
>>> +                    if (serverNumber == null) {
>>> +                        // Tomcat5 only has server.info
>>> +                        final String serverInfo =
>>> tomcatServerInfo.getProperty("server.info");
>>> +                        if (serverInfo != null) {
>>> +                            final int slash = serverInfo.indexOf('/');
>>> +                            serverNumber = serverInfo.substring(slash +
>>> 1);
>>> +                        }
>>> +                    }
>>> +                    if (serverNumber != null) {
>>> +                        System.setProperty("tomcat.version",
>>> serverNumber);
>>> +                    }
>>>
>>> -                String serverNumber =
>>> tomcatServerInfo.getProperty("server.number");
>>> -                if (serverNumber == null) {
>>> -                    // Tomcat5 only has server.info
>>> -                    String serverInfo =
>>> tomcatServerInfo.getProperty("server.info");
>>> -                    if (serverInfo != null) {
>>> -                        int slash = serverInfo.indexOf('/');
>>> -                        serverNumber = serverInfo.substring(slash + 1);
>>> +                    final String serverBuilt =
>>> tomcatServerInfo.getProperty("server.built");
>>> +                    if (serverBuilt != null) {
>>> +                        System.setProperty("tomcat.built", serverBuilt);
>>>                      }
>>> -                }
>>> -                if (serverNumber != null) {
>>> -                    System.setProperty("tomcat.version", serverNumber);
>>> +                } catch (final Throwable e) {
>>> +                    // no-op
>>>                  }
>>>
>>> -                String serverBuilt =
>>> tomcatServerInfo.getProperty("server.built");
>>> -                if (serverBuilt != null) {
>>> -                    System.setProperty("tomcat.built", serverBuilt);
>>> +                // manage additional libraries
>>> +                try {
>>> +                    ProvisioningUtil.addAdditionalLibraries();
>>> +                } catch (final IOException e) {
>>> +                    // ignored
>>>                  }
>>> -            } catch (Throwable e) {
>>> -                // no-op
>>> -            }
>>>
>>> -            // manage additional libraries
>>> -            try {
>>> -                ProvisioningUtil.addAdditionalLibraries();
>>> -            } catch (IOException e) {
>>> -                // ignored
>>> -            }
>>> +                final TomcatLoader loader = new TomcatLoader();
>>> +                loader.init(properties);
>>>
>>> -            TomcatLoader loader = new TomcatLoader();
>>> -            loader.init(properties);
>>> -
>>> -            listenerInstalled = true;
>>> -        } catch (Exception e) {
>>> -            LOGGER.log(Level.SEVERE, "TomEE Listener can't start
>>> OpenEJB", e);
>>> -            // e.printStackTrace(System.err);
>>> +                listenerInstalled.set(true);
>>> +            } catch (final Exception e) {
>>> +                LOGGER.log(Level.SEVERE, "TomEE Listener can't start
>>> OpenEJB", e);
>>> +                // e.printStackTrace(System.err);
>>> +            }
>>>          }
>>>      }
>>>
>>> -    private void installServerInfo() {
>>> +    private synchronized void installServerInfo() {
>>>          if
>>> (SystemInstance.get().getOptions().get("tomee.keep-server-info",
>>> false)) {
>>>              return;
>>>          }
>>> @@ -146,7 +150,7 @@ public class ServerListener implements L
>>>              final String version = OpenEjbVersion.get().getVersion();
>>>              final String tomeeVersion = (Integer.parseInt("" +
>>> version.charAt(0)) - 3) + version.substring(1, version.length());
>>>              field.set(null, value.substring(0, slash) + " (TomEE)" +
>>> value.substring(slash) + " (" + tomeeVersion + ")");
>>> -        } catch (Exception e) {
>>> +        } catch (final Exception e) {
>>>              // no-op
>>>          } finally {
>>>              if (field != null) {
>>>
>>
>>
>>
>> --
>> Jean-Louis
>>
>
>
>
> --
> Jean-Louis
>



-- 
Jean-Louis

Reply via email to