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
