Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jetty-users] Jetty 9.4 issue while rendering JSP page

 

Hi All,

 

I am struggling with jetty Migration of 6.1 to latest or anything above Jetty 9.1 . Currently I am trying with Jetty 9.4 which is latest.

I am able to compile the old code with the new one but there are few issues with the migration which I am trying to fix. Yes its the tough job but no option left.

I am currently focussing to render the old jsp pages after migrating it to Jetty 9.4. Here is the sample code , I have mentioned the problem in the post below. Help me with you suggestion or anything as I am struggling to fix this issue since a week now.

 

JettyServer Sample Code :

 

public class JettyServer extends AbstractService implements IJettyServer, IStatus {

    public static final String SERVICE_NAME = "JettyServer"; //frozen

    private static final Logger log = Logger.getLogger(JettyServer.class.getName());

    private static JettyServer instance = null;

    private Server server;

 

    // The map of service id to the jetty slave.

    private final Map<Integer, IJettySlave> idToSlaveMap = new HashMap<Integer, IJettySlave>();

 

    // A linked list of the slaves.

    private final List<IJettySlave> availableSlaves = new LinkedList<IJettySlave>();

 

    // TODO ref count availableAPIs.

    private final Set<Class> availableAPIs = new HashSet<Class>();

 

    // The map of service if to the slave status.

    private final Map<Integer, IStatus> idToStatusMap = new HashMap<Integer, IStatus>();

    private final int registryPort;

    private int maxWaitForSlave = 0;

 

    /**

     * Creates a new JettyServer using the default registry port from the ServiceControllerConfig.

     * @throws RemoteException when RMI problems occur.

     */

    public JettyServer() throws RemoteException {

        this(ServiceControllerConfig.getInstance().getControlPort());

    }

 

    /**

     * Creates a new JettyServer using the control port passed.

     * @param registryPort the registry port.

     * @throws RemoteException when RMI problems occur.

     */

    public JettyServer(final int registryPort) throws RemoteException {

        this.registryPort = registryPort;

        instance = this;

    }

 

    @Override

    public void initialize(final ServiceConfiguration genericConfig, final Controller controller, final int serviceId,

        final ServiceLock lock) throws Exception {

        if (genericConfig instanceof JettyServerConfiguration) {

            configuration = (JettyServerConfiguration) genericConfig;

        } else {

            configuration = XmlConfigurable.createInstance(JettyServerConfiguration.class,

                    genericConfig.getXmlConfigElement());

        }

 

        server = new Server();

        log.info("jetty version = " + Server.getVersion()); //frozen

 

        maxWaitForSlave = getConfiguration().getMaxWaitForSlave();

 

        final boolean debug = getConfiguration().getMortBayDebug();

        log.info("Eclipse mortbay debug = '" + debug + "'"); //frozen

        org.eclipse.jetty.util.log.Log.getLog().setDebugEnabled(debug);

 

        // Configure http

        final boolean httpEnabled = getConfiguration().getHttpEnabled();

 

        if (httpEnabled) {

            final int mainPort = getConfiguration().getHttpPort();

 

            log.info("adding default connector on port '" + mainPort + "'"); //frozen

                                                                             //Re-writing the code for jetty 9.3

                                                                             // Setup HTTP Connector

 

            HttpConfiguration httpConf = new HttpConfiguration();

            httpConf.setSecurePort(mainPort);

            httpConf.setSecureScheme("https");

 

            // Establish the HTTP ServerConnector

            ServerConnector httpConnector = new ServerConnector(server, new HttpConnectionFactory(httpConf));

            httpConnector.setPort(mainPort);

            server.addConnector(httpConnector);

        }

 

        // Configure SSL

        final boolean sslEnabled = getConfiguration().getSslEnabled();

 

        if (sslEnabled) {

            //Re-writing code for Jetty 9.3

            final int mainPort = getConfiguration().getHttpPort(); //8580

            final int sslPort = getConfiguration().getSslPort(); //8581

            final String sslKeyStore = getConfiguration().getSslKeyStore();

            final String sslPassword = getConfiguration().getSslPassword();

            final String sslKeyPassword = getConfiguration().getSslKeyPassword();

            final String sslTrustPassword = getConfiguration().getSslTrustPassword();

 

           //Added for  Jetty 9.3

            final KeyStore trustKeyStore = KeyStore.getInstance(getConfiguration().getSslKeyStore());

 

            SslContextFactory theSSLFactory = new SslContextFactory();

 

            theSSLFactory.setKeyStorePath(sslKeyStore);

            theSSLFactory.setKeyManagerPassword(sslPassword);

            theSSLFactory.setKeyStorePassword(sslKeyPassword);

            theSSLFactory.setTrustStore(trustKeyStore);

            theSSLFactory.setTrustStorePassword(sslTrustPassword);

 

            // Setup HTTP Connector

            HttpConfiguration httpConf = new HttpConfiguration();

            httpConf.setSecurePort(mainPort);

            httpConf.setSecureScheme("https");

 

            // Setup HTTPS Configuration

            HttpConfiguration httpsConf = new HttpConfiguration(httpConf);

            httpsConf.addCustomizer(new SecureRequestCustomizer()); // adds ssl info to request object

 

            // Establish the HTTPS ServerConnector

            ServerConnector httpsConnector = new ServerConnector(server,

                    new SslConnectionFactory(theSSLFactory, "http/1.1"), new HttpConnectionFactory(httpsConf));

            httpsConnector.setPort(sslPort);

 

            log.info("adding ssl connector on port '" + sslPort + "'"); //frozen

            server.addConnector(httpsConnector);

 

            //}

        }

 

        // Check we had 1 connector else the server is useless

        if (server.getConnectors().length == 0) {

            throw new FileNotFoundException("No connectors registered.  Please see HttpEnable or SslEnable XML tags."); //frozen

        }

 

        // Configure the handlers

        final HandlerCollection handlers = new HandlerCollection();

 

        //4. Enabling the Annotation based configuration

        org.eclipse.jetty.webapp.Configuration.ClassList classlist = org.eclipse.jetty.webapp.Configuration.ClassList.setServerDefault(server);

        classlist.addAfter("org.eclipse.jetty.webapp.FragmentConfiguration",

           "org.eclipse.jetty.plus.webapp.EnvConfiguration", "org.eclipse.jetty.plus.webapp.PlusConfiguration");

        classlist.addBefore("org.eclipse.jetty.webapp.JettyWebXmlConfiguration",

            "org.eclipse.jetty.annotations.AnnotationConfiguration");

 

        for (final WebAppContext webAppContext : getConfiguration().getWebAppContexts()) {

            log.info("Adding WebAppContext " + webAppContext.getWar() + " at " + webAppContext.getContextPath()); //frozen

 

            webAppContext.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",

                ".*/[^/]*jstl.*\\.jar$");

            handlers.addHandler(webAppContext);

        }

 

        final boolean accessLogEnabled = getConfiguration().getLogEnabled();

 

        if (accessLogEnabled) {

            final RequestLogHandler requestLogHandler = new RequestLogHandler();

            final File logDir = ServiceUtilities.getLogDirectory();

 

            if (!logDir.exists()) {

                logDir.mkdirs();

            }

 

            final File logFile = new File(getConfiguration().getLogFormat());

 

            if (!logFile.getParentFile().exists()) {

                logFile.getParentFile().mkdirs();

            }

 

            final NCSARequestLog requestLog = new NCSARequestLog(getConfiguration().getLogFormat());

            requestLog.setRetainDays(getConfiguration().getLogRetain());

            requestLog.setAppend(getConfiguration().getLogAppend());

            requestLog.setExtended(getConfiguration().getLogExtended());

            requestLog.setLogTimeZone(getConfiguration().getLogTz());

            requestLog.setLogLatency(getConfiguration().getLogLatency());

            requestLogHandler.setRequestLog(requestLog);

            handlers.addHandler(requestLogHandler);

        }

 

        handlers.addHandler(new DefaultHandler());

 

        server.setHandler(handlers);

 

        // server.setUserRealms(new UserRealm[] { new OSMUserRealm() });

        // server.addBean(new LoginService[] { new OSMUserRealm() });

 

        // HashLoginService loginService = new HashLoginService();

        //loginService.setName("osmRealm");

        //server.addBean(loginService);

 

        // log.info("initialize...." + loginService.getName());

        JettyServerInfo.install(server);

 

        super.initialize(configuration, controller, serviceId, lock);

    }

 

    @Override

    public JettyServerConfiguration getConfiguration() {

        return (JettyServerConfiguration) super.getConfiguration();

    }

 

    @Override

    public synchronized void stop() {

        final Thread t = new Thread("JettyServer Stop Thread") { //frozen

                @Override

                public void run() {

                    try {

                        server.stop();

                    } catch (Exception ex) {

                        log.log(Level.SEVERE, "Failed to stop Jetty server", ex); //frozen

                    }

                }

            };

 

        t.start();

 

        try {

            t.join(500);

        } catch (final InterruptedException ex) {

        }

 

        super.stop();

    }

 

    @Override

    public synchronized void start() throws Exception {

        log.info("start()"); //frozen

 

        registerJetty();

 

        server.start();

 

        // finish startup which registers with the controller

        super.start();

 

        server.join(); //For Jetty 9.3 and above

 

        // server.join(); need to uncomment and verify if jetty if we need server.join in Jetty 9.3 as previous person don't have

        log.info("After Jetty 9.3 Services starts..");

    }

 

    private void registerJetty() throws RemoteException, AlreadyBoundException, AlreadyBoundException {

        final Registry registry = LocateRegistry.getRegistry("127.0.0.1", registryPort); //frozen

 

        final Remote remote = UnicastRemoteObject.toStub(this);

        log.info("Registering JettyServer"); //frozen

        registry.rebind(IJettyServer.JETTYSERVER_NAME, remote);

    }

 

    @Override

    public void unregister(final IJettySlave slave) throws RemoteException {

        log.info("unregister(" + slave.getName() + ") (ID=" + slave.getServiceID() + ")"); //frozen

 

        synchronized (idToSlaveMap) {

            idToSlaveMap.remove(slave.getServiceID());

 

            if (slave instanceof IStatus) {

                synchronized (idToStatusMap) {

                    idToStatusMap.remove(slave.getServiceID());

                }

            }

        }

 

        synchronized (availableSlaves) {

            // Shouldnt really be in the list as teh BusyAPIDynamicProxy shouldnt

            // have re-added it on a shutdown.

            if (availableSlaves.remove(slave)) {

                availableSlaves.notifyAll();

            }

        }

    }

 

    @Override

    public void register(final IJettySlave slave) throws RemoteException {

        log.info("registered(" + slave.getName() + ") (ID=" + slave.getServiceID() + ")"); //frozen

 

        synchronized (idToSlaveMap) {

            idToSlaveMap.put(slave.getServiceID(), slave);

 

            if (slave instanceof IStatus) {

                synchronized (idToStatusMap) {

                    idToStatusMap.put(slave.getServiceID(), (IStatus) slave);

                }

            }

        }

 

        synchronized (availableSlaves) {

            availableSlaves.add(slave);

            availableSlaves.notifyAll();

        }

 

        synchronized (availableAPIs) {

            availableAPIs.addAll(slave.getAPIs());

        }

    }

 

    public static JettyServer getInstance() {

        return instance;

    }

 

    public <I extends Remote> I get(final Class<I> i) throws RemoteException {

        return createApiProxy(i);

    }

 

    void push(final IJettySlave slave) {

        synchronized (availableSlaves) {

            availableSlaves.add(0, slave);

            availableSlaves.notifyAll();

        }

    }

 

    <I extends Remote> IJettySlave pop(final Class<I> i)

        throws RemoteException {

        if (idToSlaveMap.isEmpty()) {

            throw new IllegalStateException("No JettySlaves available, please check the server log files."); //frozen

        }

 

        if (availableAPIs.isEmpty()) {

            throw new IllegalStateException("No JettySlave APIs available, please check the server log files."); //frozen

        }

 

        synchronized (availableAPIs) {

            // Check if any slave provides this API, as its pointless waiting

            // when we know an API will not be available.

            // FYI : This should be removed if we provide auto startup of slaves.

            if (!availableAPIs.contains(i)) {

                throw new RemoteException("API " + i.getName() + " is not available."); //frozen

            }

        }

 

        final long end = System.currentTimeMillis() + maxWaitForSlave;

 

        while (System.currentTimeMillis() < end) {

            synchronized (availableSlaves) {

                // Get a service from any idle slave.

                final Iterator<IJettySlave> it = availableSlaves.iterator();

 

                while (it.hasNext()) {

                    final IJettySlave slave = it.next();

 

                    try {

                        final I slaveApi = slave.get(i);

 

                        if (slaveApi != null) {

                            it.remove(); // remove this slave from list

 

                            return slave;

                        }

                    } catch (final RemoteException re) {

                        // this host doesnt work so remove it.

                        it.remove();

                    }

                }

 

                // now wait for a slave to become inactive

                final long sleep = end - System.currentTimeMillis();

 

                try {

                    if (sleep > 0) {

                        availableSlaves.wait(sleep);

                    }

                } catch (final InterruptedException ex) {

                }

            }

        }

 

        throw new IllegalStateException("All APIs '" + i.getName() + "' are busy or unavailable."); //frozen

    }

 

    /**

     * Creates a proxy for the specific interface.

     * @param <I> a remote interface class.

     * @param i the remote interface class

     * @return the proxy for this interface.

     * @throws RemoteException when RMI fails.

     * @see BusyAPIDynamicProxy

     */

    @SuppressWarnings("unchecked")

    private <I extends Remote> I createApiProxy(final Class<I> i)

        throws RemoteException {

        // Insert the busy dynamic proxy so we know which is busy

        final I proxy = (I) java.lang.reflect.Proxy.newProxyInstance(i.getClassLoader(), new Class[] { i },

                new BusyAPIDynamicProxy<I>(this, i));

 

        return proxy;

    }

 

    public final Map<Integer, IStatus> getSlaveStatus()

        throws RemoteException {

        return new TreeMap<Integer, IStatus>(idToStatusMap);

    }

 

    public final IStatus getStatus() {

        return this;

    }

 

    @Override

    public long getUpTime() throws RemoteException {

        final java.lang.management.RuntimeMXBean mx = java.lang.management.ManagementFactory.getRuntimeMXBean();

 

        return mx.getUptime() / 1000;

    }

 

    @Override

    public long getTotalMemory() throws RemoteException {

        return Runtime.getRuntime().totalMemory();

    }

 

    @Override

    public long getFreeMemory() throws RemoteException {

        return Runtime.getRuntime().freeMemory();

    }

 

    @Override

    public long getMaxMemory() throws RemoteException {

        return Runtime.getRuntime().maxMemory();

    }

 

    public static void main(final String[] args) throws Exception {

        // jetty depends on the registry all the time.

        LocateRegistry.createRegistry(ServiceControllerConfig.getInstance().getControlPort());

 

        System.setProperty("service.id", "-1"); //frozen

 

        runStandalone(SERVICE_NAME);

 

        // jetty server depends on a slave working.

        runStandalone("JettySlave1"); //frozen

    }

}

 

Jetty Configuration class:

 

/**

* RCS: $Id: //oswm/rel20.10_Patches/WorkManager/src/com/osm/services/webservice/JettyServerConfiguration.java#1 $

* Last Modified: $Author: adminp4 $, $DateTime: 2018/03/28 14:59:10 $

*/

package com.osm.services.webservice;

 

import java.io.File;

 

import java.util.ArrayList;

import java.util.List;

import java.util.logging.Logger;

 

import org.eclipse.jetty.webapp.WebAppContext;

 

import org.w3c.dom.Element;

 

import com.osm.services.configuration.ManagerServiceConfiguration;

 

 

public class JettyServerConfiguration extends ManagerServiceConfiguration {

    private static final Logger log = Logger.getLogger(JettyServerConfiguration.class.getName());

    private static final String WAR_TAG = "War"; //frozen

    private static final String MAX_WAIT_FOR_SLAVE_TAG = "MaxWaitForSlave"; //frozen

    private static final String MORTBAY_DEBUG_TAG = "MortBayDebug"; //frozen

    private static final String HTTP_ENABLED_TAG = "HttpEnabled"; //frozen

    private static final String HTTP_PORT_TAG = "HttpPort"; //frozen

    private static final String NIO_ENABLED_TAG = "NioEnabled"; //frozen

 

    // SSL specific

    private static final String SSL_ENABLED_TAG = "SslEnabled"; //frozen

    private static final String SSL_PORT_TAG = "SslPort"; //frozen

    private static final String SSL_KEY_STORE_TAG = "SslKeyStore"; //frozen

    private static final String SSL_PASSWORD_TAG = "SslPassword"; //frozen

    private static final String SSL_KEY_PASSWORD_TAG = "SslKeyPassword"; //frozen

    private static final String SSL_TRUST_PASSWORD_TAG = "SslTrustPassword"; //frozen

 

    // Log specific

    private static final String ACCESS_LOG_FORMAT_TAG = "AccessLogFormat"; //frozen

    private static final String ACCESS_LOG_ENABLED_TAG = "AccessLogEnabled"; //frozen

    private static final String ACCESS_LOG_RETAIN_TAG = "AccessLogRetainDays"; //frozen

    private static final String ACCESS_LOG_APPEND_TAG = "AccessLogAppend"; //frozen

    private static final String ACCESS_LOG_EXTENDED_TAG = "AccessLogExtended"; //frozen

    private static final String ACCESS_LOG_LATENCY_TAG = "AccessLogLatency"; //frozen

    private static final String ACCESS_LOG_TZ_TAG = "AccessLogTimeZone"; //frozen

 

    // Read values

    private List<WebAppContext> warContexts = new ArrayList<WebAppContext>();

    private int maxWaitForSlaves;

    private boolean mortBayDebug;

    private boolean httpEnabled;

    private int httpPort;

    private boolean nioEnabled;

    private boolean sslEnabled;

    private int sslPort;

    private String sslKeyStore;

    private String sslPassword;

    private String sslKeyPassword;

    private String sslTrustPassword;

    private boolean logEnabled;

    private String logFormat;

    private int logRetain;

    private boolean logAppend;

    private boolean logExtended;

    private boolean logLatency;

    private String logTz;

 

    public JettyServerConfiguration() {

    }

 

    @Override

    public void configure(final Element xmlConfigElement) {

        super.configure(xmlConfigElement);

 

        final List<Element> warElements = getChildren(WAR_TAG);

 

        for (final Element warElement : warElements) {

            final String context = warElement.getAttribute("context"); //frozen

            final String location = warElement.getAttribute("location"); //frozen

 

            if ((location != null) && !location.isEmpty()) {

                // check file is valid

                final File f = new File(location);

 

                if (!f.exists()) {

                    log.warning("War location '" + f.getAbsolutePath() + "' does not exists."); //frozen

                }

 

                final WebAppContext webAppContext = new WebAppContext();

                webAppContext.setContextPath(context);

                webAppContext.setResourceBase(f.getAbsolutePath()); //added in 9.3

                webAppContext.setWar(f.getAbsolutePath());

                webAppContext.setExtractWAR(false);

 

                warContexts.add(webAppContext);

 

                log.info("Context Path-->" + context);

                log.info("War location-->" + f.getAbsolutePath());

            } else {

                throw new IllegalStateException("War location must be specified."); //frozen

            }

        }

 

        maxWaitForSlaves = getChildValueAsInteger(MAX_WAIT_FOR_SLAVE_TAG, 4 * 60 * 1000);

        mortBayDebug = getChildValueAsBoolean(MORTBAY_DEBUG_TAG, false);

        httpEnabled = getChildValueAsBoolean(HTTP_ENABLED_TAG, true);

        nioEnabled = getChildValueAsBoolean(NIO_ENABLED_TAG, false);

        httpPort = getChildValueAsInteger(HTTP_PORT_TAG, 8580);

 

        sslEnabled = getChildValueAsBoolean(SSL_ENABLED_TAG, false);

        sslPort = getChildValueAsInteger(SSL_PORT_TAG, 8581);

        sslKeyPassword = getChildValue(SSL_KEY_PASSWORD_TAG);

        sslKeyStore = getChildValue(SSL_KEY_STORE_TAG);

        sslPassword = getChildValue(SSL_PASSWORD_TAG);

        sslTrustPassword = getChildValue(SSL_TRUST_PASSWORD_TAG);

 

        logEnabled = getChildValueAsBoolean(ACCESS_LOG_ENABLED_TAG, true);

        logFormat = getChildValue(ACCESS_LOG_FORMAT_TAG, "logs/access_logs/yyyy_mm_dd.access.log"); //frozen

        logRetain = getChildValueAsInteger(ACCESS_LOG_RETAIN_TAG, 90);

        logAppend = getChildValueAsBoolean(ACCESS_LOG_APPEND_TAG, true);

        logExtended = getChildValueAsBoolean(ACCESS_LOG_EXTENDED_TAG, false);

        logLatency = getChildValueAsBoolean(ACCESS_LOG_LATENCY_TAG, false);

        logTz = getChildValue(ACCESS_LOG_TZ_TAG, "GMT"); //frozen

 

        log.info("End of Configuration..");

    }

 

    public int getHttpPort() {

        return httpPort;

    }

 

    public boolean getNioEnabled() {

        return nioEnabled;

    }

 

    public boolean getHttpEnabled() {

        return httpEnabled;

    }

 

    public List<WebAppContext> getWebAppContexts() {

        return warContexts;

    }

 

    public int getMaxWaitForSlave() {

        return maxWaitForSlaves;

    }

 

    public boolean getMortBayDebug() {

        return mortBayDebug;

    }

 

    public boolean getSslEnabled() {

        return sslEnabled;

    }

 

    public int getSslPort() {

        return sslPort;

    }

 

    public String getSslKeyStore() {

        return sslKeyStore;

    }

 

    public String getSslPassword() {

        return sslPassword;

    }

 

    public String getSslKeyPassword() {

        return sslKeyPassword;

    }

 

    public String getSslTrustPassword() {

        return sslTrustPassword;

    }

 

    public boolean getLogEnabled() {

        return logEnabled;

    }

 

    public String getLogFormat() {

        return logFormat;

    }

 

    public int getLogRetain() {

        return logRetain;

    }

 

    public boolean getLogAppend() {

        return logAppend;

    }

 

    public boolean getLogExtended() {

        return logExtended;

    }

 

    public boolean getLogLatency() {

        return logLatency;

    }

 

    public String getLogTz() {

        return logTz;

    }

 

    @Override

    public String toString() {

        return "JettyServerConfiguration#" + getServiceName(); //frozen

    }

 

    @Override

    public String prettyPrint() {

        final String s = super.prettyPrint();

 

        final StringBuilder str = new StringBuilder();

        str.append(s);

        str.append("------------- WebApps \n"); //frozen

        str.append(String.format("%-40s%s\n", "Context", "WarFile")); //frozen

 

        for (final WebAppContext webapp : warContexts) {

            str.append(String.format("%-40s%s\n", webapp.getContextPath(), webapp.getWar())); //frozen

        }

 

        return str.toString();

    }

}

 

Logs for the execution:

 

INFO      17:11:46 05/07/2018       [com.osm.services.launcher.ServiceLauncher]    ServiceId = 3

SEVERE 17:11:46 05/07/2018       [stderr] 2018-07-05 17:11:46.936:INFO::main: Logging initialized @821ms to org.eclipse.jetty.util.log.StdErrLog

INFO      17:11:46 05/07/2018       [com.osm.services.webservice.JettyServerConfiguration]              Context Path-->/mmweb

INFO      17:11:46 05/07/2018       [com.osm.services.webservice.JettyServerConfiguration]              War location-->C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\mmweb

INFO      17:11:46 05/07/2018       [com.osm.services.webservice.JettyServerConfiguration]              Context Path-->/

INFO      17:11:46 05/07/2018       [com.osm.services.webservice.JettyServerConfiguration]              War location-->C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\OSMWebServices.war

INFO      17:11:46 05/07/2018       [com.osm.services.webservice.JettyServerConfiguration]              End of Configuration..

INFO      17:11:46 05/07/2018       [com.osm.services.webservice.JettyServer]          jetty version = 9.4.5.v20170502

INFO      17:11:46 05/07/2018       [com.osm.services.webservice.JettyServer]          Eclipse mortbay debug = 'false'

INFO      17:11:46 05/07/2018       [com.osm.services.webservice.JettyServer]          adding default connector on port '8580'

INFO      17:11:47 05/07/2018       [com.osm.services.webservice.JettyServer]          Adding WebAppContext C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\mmweb at /mmweb

INFO      17:11:47 05/07/2018       [com.osm.services.webservice.JettyServer]          Adding WebAppContext C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\OSMWebServices.war at /

INFO      17:11:47 05/07/2018       [com.osm.services.webservice.JettyServer]          initialize....osmRealm

INFO      17:11:47 05/07/2018       [com.osm.services.launcher.ServiceLauncher]    Configuration 'JettyServer' :

------------- XML configuration values

AccessLogAppend:                        true

AccessLogEnabled:                       true

AccessLogExtended:                      false

AccessLogFormat:                        logs/access_logs/yyyy_mm_dd.access.log

AccessLogLatency:                       false

AccessLogRetainDays:                    90

AccessLogTimeZone:                      GMT

AdditionalClasspath:                    jar\\jetty\\*

Executable:                             DreoJettyServer.exe

FileHandlerLogLevel:                    FINE

HttpEnabled:                            true

HttpPort:                               8580

JvmArgs:                                -Xms16m -Xmx128m -Djava.rmi.server.hostname=localhost

LogAppend:                              false

MaxLogFileSizeInMB:                     0

MortBayDebug:                           false

SslEnabled:                             false

SslPort:                                8581

StartupTimeoutInMinutes:                5

 

------------- Configuration class properties

classpath:                              classes;jar\*;jar\custom\*;jar\\jetty\\*

configurationFile:                      custom.xml

debugOptions:                          

defaultUser:                            medmgr

enabled:                                true

executable:                             DreoJettyServer.exe

fileHandlerLevel:                       FINE

httpEnabled:                            true

httpPort:                               8580

javaClass:                              com.osm.services.webservice.JettyServer

jvmArgs:                                -Xms16m -Xmx128m -Djava.rmi.server.hostname=localhost

logAppend:                              false

logEnabled:                             true

logExtended:                            false

logFormat:                              logs/access_logs/yyyy_mm_dd.access.log

logLatency:                             false

logLevels:                              {=INFO, com.osm.ws.QueryService=FINE, com.osm.webservices.legacy.FileService=FINE, com.osm.webservices.legacy.OSMService=FINE, com.osm.webservices.legacy.servlets=FINE, com.osm.ws.UpdateService=FINE}

logRetain:                              90

logTz:                                  GMT

maxLogFileSizeInMB:                     0

maxWaitForSlave:                        240000

mortBayDebug:                           false

nioEnabled:                             false

runLevel:                               5.0

serviceName:                            JettyServer

sslEnabled:                             false

sslPort:                                8581

startupTimeoutInMinutes:                5

webAppContexts:                         [o.e.j.w.WebAppContext@4b553d26{/mmweb,file:///C:/Program%20Files/RTC/Dreo%20Elements/Direct%20Manager%20Server%2020.1/webapps/mmweb/,UNAVAILABLE}{C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\mmweb}, o.e.j.w.WebAppContext@69a3d1d{/,file:///C:/Program%20Files/RTC/Dreo%20Elements/Direct%20Manager%20Server%2020.1/webapps/OSMWebServices.war,UNAVAILABLE}{C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\OSMWebServices.war}]

------------- WebApps

Context                                 WarFile

/mmweb                                  C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\mmweb

/                                       C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\OSMWebServices.war

 

 

INFO      17:11:47 05/07/2018       [com.osm.services.webservice.JettyServer]          start()

INFO      17:11:47 05/07/2018       [com.osm.services.webservice.JettyServer]          Registering JettyServer

SEVERE 17:11:47 05/07/2018       [stderr] 2018-07-05 17:11:47.092:INFO:oejs.Server:main: jetty-9.4.5.v20170502

SEVERE 17:11:47 05/07/2018       [stderr] 2018-07-05 17:11:47.217:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=6ms

SEVERE 17:11:47 05/07/2018       [stderr] 2018-07-05 17:11:47.264:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0

SEVERE 17:11:47 05/07/2018       [stderr] 2018-07-05 17:11:47.264:INFO:oejs.session:main: No SessionScavenger set, using defaults

SEVERE 17:11:47 05/07/2018       [stderr] 2018-07-05 17:11:47.264:INFO:oejs.session:main: Scavenging every 660000ms

SEVERE 17:11:47 05/07/2018       [stderr] 2018-07-05 17:11:47.264:WARN:oejs.SecurityHandler:main: ServletContext@o.e.j.w.WebAppContext@4b553d26{/mmweb,file:///C:/Program%20Files/RTC/Dreo%20Elements/Direct%20Manager%20Server%2020.1/webapps/mmweb/,STARTING}{C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\mmweb} has uncovered http methods for path: /css/*

SEVERE 17:11:47 05/07/2018       [stderr] 2018-07-05 17:11:47.264:WARN:oejs.SecurityHandler:main: ServletContext@o.e.j.w.WebAppContext@4b553d26{/mmweb,file:///C:/Program%20Files/RTC/Dreo%20Elements/Direct%20Manager%20Server%2020.1/webapps/mmweb/,STARTING}{C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\mmweb} has uncovered http methods for path: /*

SEVERE 17:11:47 05/07/2018       [stderr] 2018-07-05 17:11:47.264:WARN:oejs.SecurityHandler:main: ServletContext@o.e.j.w.WebAppContext@4b553d26{/mmweb,file:///C:/Program%20Files/RTC/Dreo%20Elements/Direct%20Manager%20Server%2020.1/webapps/mmweb/,STARTING}{C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\mmweb} has uncovered http methods for path: /js/*

SEVERE 17:11:47 05/07/2018       [stderr] 2018-07-05 17:11:47.264:WARN:oejs.SecurityHandler:main: ServletContext@o.e.j.w.WebAppContext@4b553d26{/mmweb,file:///C:/Program%20Files/RTC/Dreo%20Elements/Direct%20Manager%20Server%2020.1/webapps/mmweb/,STARTING}{C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\mmweb} has uncovered http methods for path: /style/*

INFO      17:11:47 05/07/2018       [com.sun.xml.ws.server.http]     WSSERVLET12: JAX-WS context listener initializing

WARNING           17:11:47 05/07/2018       [com.sun.xml.ws.wsdl.PayloadQNameBasedOperationFinder]     Non unique body parts! In a port, as per BP 1.1 R2710 operations must have unique operation signature on the wire for successful dispatch. Methods [getGroups, getUsers, getUsersAndGroups, getRoutingLists, helpAbout] have the same request body block . Method dispatching may fail, runtime will try to dispatch using SOAPAction. Another option is to enable AddressingFeature to enabled runtime to uniquely identify WSDL operation using wsa:Action header.

WARNING           17:11:47 05/07/2018       [com.sun.xml.ws.wsdl.PayloadQNameBasedOperationFinder]     Non unique body parts! In a port, as per BP 1.1 R2710 operations must have unique operation signature on the wire for successful dispatch. Methods [getGroups, getUsers, getUsersAndGroups, getRoutingLists, helpAbout] have the same request body block . Method dispatching may fail, runtime will try to dispatch using SOAPAction. Another option is to enable AddressingFeature to enabled runtime to uniquely identify WSDL operation using wsa:Action header.

WARNING           17:11:47 05/07/2018       [com.sun.xml.ws.wsdl.PayloadQNameBasedOperationFinder]     Non unique body parts! In a port, as per BP 1.1 R2710 operations must have unique operation signature on the wire for successful dispatch. Methods [getGroups, getUsers, getUsersAndGroups, getRoutingLists, helpAbout] have the same request body block . Method dispatching may fail, runtime will try to dispatch using SOAPAction. Another option is to enable AddressingFeature to enabled runtime to uniquely identify WSDL operation using wsa:Action header.

INFO      17:11:48 05/07/2018       [com.sun.xml.ws.servlet.http]    WSSERVLET14: JAX-WS servlet initializing

SEVERE 17:11:48 05/07/2018       [stderr] 2018-07-05 17:11:48.296:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@4b553d26{/mmweb,file:///C:/Program%20Files/RTC/Dreo%20Elements/Direct%20Manager%20Server%2020.1/webapps/mmweb/,AVAILABLE}{C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\mmweb}

SEVERE 17:11:48 05/07/2018       [stderr] 2018-07-05 17:11:48.311:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=0ms

SEVERE 17:11:48 05/07/2018       [stderr] 2018-07-05 17:11:48.327:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@69a3d1d{/,file:///C:/Program%20Files/RTC/Dreo%20Elements/Direct%20Manager%20Server%2020.1/webapps/OSMWebServices.war,AVAILABLE}{C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\webapps\OSMWebServices.war}

SEVERE 17:11:48 05/07/2018       [stderr] 2018-07-05 17:11:48.327:INFO:oejs.AbstractNCSARequestLog:main: Opened C:\Program Files\RTC\Dreo Elements\Direct Manager Server 20.1\logs\access_logs\2018_07_05.access.log

SEVERE 17:11:48 05/07/2018       [stderr] 2018-07-05 17:11:48.433:INFO:oejs.AbstractConnector:main: Started ServerConnector@1b1637e1{HTTP/1.1,[http/1.1]}{0.0.0.0:8580}

SEVERE 17:11:48 05/07/2018       [stderr] 2018-07-05 17:11:48.433:INFO:oejs.Server:main: Started @2313ms

INFO      17:11:58 05/07/2018       [com.osm.services.webservice.JettyServer]          registered(JettySlave2) (ID=5)

INFO      17:12:06 05/07/2018       [com.osm.services.webservice.JettyServer]          registered(JettySlave1) (ID=6)

 

All the remaining details was same in Jetty 6.1 except this line:

 

webAppContexts:                         [org.mortbay.jetty.webapp.WebAppContext@5792a0{/mmweb,C:\Program Files (x86)\RTC\Dreo Elements\Direct Manager Server 20.0\webapps\mmweb}, org.mortbay.jetty.webapp.WebAppContext@653222{/,C:\Program Files (x86)\RTC\Dreo Elements\Direct Manager Server 20.0\webapps\OSMWebServices.war}]

 

Just ignore the path of mmweb it is different directory.

 

The problem I am facing is when I hit the url for a jsp page I am getting the error like below which I was not getting in earlier jetty 6.1

 

Caused by:

javax.servlet.ServletException: org.apache.jasper.JasperException: An exception occurred processing JSP page /include/header.jsp at line 8

 

5: String style = (String)session.getAttribute("style");

6: if(style==null) {

7:     // controls default style

8:     style = WebConfig.getInstance(getServletContext()).getOption("DefaultTheme");

9:     session.setAttribute("style", style);

10: }

11:

 

 

Stacktrace:

                at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)

                at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

                at org.eclipse.jetty.server.Server.handle(Server.java:564)

                at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:317)

                at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)

                at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)

                at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)

                at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)

                at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:128)

                at org.eclipse.jetty.util.thread.Invocable$InvocableExecutor.invoke(Invocable.java:222)

                at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:294)

                at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:126)

                at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672)

                at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590)

                at java.lang.Thread.run(Thread.java:748)

Caused by: org.apache.jasper.JasperException: An exception occurred processing JSP page /include/header.jsp at line 8

The jsp contains the scriptlet, please ignore that I am using the scriptlet here. Just trying to show you the actual problem .

 

<%@page import="com.osm.jsp.util.WebConfig"%>

<%

request.setAttribute("start.time", (Long)System.currentTimeMillis());

 

String style = (String)session.getAttribute("style");

if(style==null) {

   // controls default style

   style = WebConfig.getInstance(getServletContext()).getOption("DefaultTheme");

   session.setAttribute("style", style);

}

 

final String header = "style/" + style + "/header.jsp";

%>

<%@taglib prefix="osm" uri="/WEB-INF/tlds/Manager.tld" %>

<osm:license writeAccess="false"/>

<jsp:include page="<%=header%>"/>

 

I don't think it has anything to do with dependency as even displaying the Jetty version is giving the same kind of error.But it gets render when I remove the JettyServer import and version call,i.e only system libraries are getting detected.

 

These are the jars I have used in classpath:

 

C:\Users\vkarn\.m2\repository\javax\servlet\javax.servlet-api\3.1.0\javax.servlet-api-3.1.0.jar

C:\Users\vkarn\.m2\repository\junit\junit\4.12\junit-4.12.jar

C:\Users\vkarn\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jetty\jetty-annotations\9.4.5.v20170502\jetty-annotations-9.4.5.v20170502.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jetty\jetty-plus\9.4.5.v20170502\jetty-plus-9.4.5.v20170502.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jetty\jetty-jndi\9.4.5.v20170502\jetty-jndi-9.4.5.v20170502.jar

C:\Users\vkarn\.m2\repository\javax\annotation\javax.annotation-api\1.2\javax.annotation-api-1.2.jar

C:\Users\vkarn\.m2\repository\org\ow2\asm\asm\5.1\asm-5.1.jar

C:\Users\vkarn\.m2\repository\org\ow2\asm\asm-commons\5.1\asm-commons-5.1.jar

C:\Users\vkarn\.m2\repository\org\ow2\asm\asm-tree\5.1\asm-tree-5.1.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jetty\jetty-webapp\9.4.5.v20170502\jetty-webapp-9.4.5.v20170502.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jetty\jetty-xml\9.4.5.v20170502\jetty-xml-9.4.5.v20170502.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jetty\jetty-servlet\9.4.5.v20170502\jetty-servlet-9.4.5.v20170502.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jetty\jetty-security\9.4.5.v20170502\jetty-security-9.4.5.v20170502.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jetty\jetty-server\9.4.5.v20170502\jetty-server-9.4.5.v20170502.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jetty\jetty-http\9.4.5.v20170502\jetty-http-9.4.5.v20170502.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jetty\jetty-io\9.4.5.v20170502\jetty-io-9.4.5.v20170502.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jetty\apache-jsp\9.4.5.v20170502\apache-jsp-9.4.5.v20170502.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jetty\jetty-util\9.4.5.v20170502\jetty-util-9.4.5.v20170502.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jetty\toolchain\jetty-schemas\3.1\jetty-schemas-3.1.jar

C:\Users\vkarn\.m2\repository\org\mortbay\jasper\apache-jsp\8.5.9.1\apache-jsp-8.5.9.1.jar

C:\Users\vkarn\.m2\repository\org\mortbay\jasper\apache-el\8.5.9.1\apache-el-8.5.9.1.jar

C:\Users\vkarn\.m2\repository\org\eclipse\jdt\core\compiler\ecj\4.4.2\ecj-4.4.2.jar

C:\Users\vkarn\.m2\repository\org\apache\taglibs\taglibs-standard-spec\1.2.5\taglibs-standard-spec-1.2.5.jar

C:\Users\vkarn\.m2\repository\org\apache\taglibs\taglibs-standard-impl\1.2.5\taglibs-standard-impl-1.2.5.jar


Back to the top