You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 21 Next »

Currently JobScheduler shipped with a proprietary built-in web server. Using the JobScheduler plugin feature it is possible to configure JobScheduler for working with Jetty. This document describes what you have to do, to run JobScheduler with an underlaying Jetty web server.

Installation

Now we have a "full" installer and an update installer with jetty. It is only a test version.
The update installer expects an existing installation.

The installer tries to generate some symlinks to simulate virtual directories for JOC (JobScheduler Operations Center). The symlink generation is not supported for Windows older than Vista.

The installer configures the ./config/factory.ini, the ./config/jetty.xml and the ./config/web.xml as described below.
<span stylh1. "color:red">The installer doesn't configure the ./config/scheduler.xml. If you want to use Jetty then you must configure ./config/scheduler.xml itself as described below.</span>

The installer contains a keystore file for testing https. This keystore is not trusted and has a wrong hostname inside, but can still be used for testing.

Please make your own keystore file jetty.jks.

After the installation you can open JOC with jetty via

You can change these ports in the ./config/jetty.xml.

<span id"classpath">

Configure factory.ini (Put the necessary libraries in the classpath)

To run JobScheduler with Jetty instead the built-in web-server you have to use the Jetty plugin. It is a part of the library com.sos.scheduler.engine.plugins.jetty-xxx.jar. Beside the com.sos.scheduler.engine.plugins.jetty-xxx.jar it is necessary to put the dependend libraries for the jetty plugin into the classpath of the JobScheduler. The installer put them into the ./lib/jetty_ext folder and add it to the classpath in the ./config/factory.ini.
Unix

 ...
 [java]
 class_path = $\{SCHEDULER_HOME\}/lib/*.jar:$\{SCHEDULER_HOME\}/lib/hibernate/*.jar:<span style="color:red">$\{SCHEDULER_HOME\}/lib/jetty_ext/*.jar</span>
 ...

Windows

 ...
 [java]
 class_path = $\{SCHEDULER_HOME\}/lib/*.jar;$\{SCHEDULER_HOME\}/lib/hibernate/*.jar;<span style="color:red">$\{SCHEDULER_HOME\}/lib/jetty_ext/*.jar</span>
 ...

</span>

<span ih1. "scheduler">

Configure scheduler.xml

To use the jetty plugin you have to configure it in the scheduler.xml:

 <spooler>
  <config ...>
    ...
    <security ignore_unknown_hosts="yes">
      <allowed_host host="localhost" level="all"/>
      <allowed_host host="192.11.0" level="all"/>
    </security>
    
    <span style="color:red"><plugins>
      ...
      <plugin java_class="com.sos.scheduler.engine.plugins.jetty.JettyPlugin">
        <plugin.config />
      </plugin>
      ...
    </plugins></span>
    ...
  </config>
 </spooler>

Please note that it is necessary to specify an empty plugin.config element.
</span>

<span id"jetty">

Configure jetty.xml

To run JobScheduler with jetty it is also necessary to create two configuration files for the Jetty web server (./config/jetty.xml and ./config/web.xml). The minimal declaration defines a connector for the port to communicate with JobScheduler via http:

 <Configure class="org.eclipse.jetty.server.Server">
   <Call name="addConnector">
     <Arg>
       <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
         <Set name="port">44440</Set>
       </New>
     </Arg>
   </Call>
 </Configure>

It is important to know that this port (here 44440) is a substitute for the port attribute in the config element of scheduler.xml.

At the moment both ports are required.

With a second connector it is possible to define a communication channel via https (ssl):

 <Call name="addConnector">
  <Arg>
    <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
      <Arg>
        <New class="org.eclipse.jetty.util.ssl.SslContextFactory">
          <Set name="keyStore"><SystemProperty name="jetty.home" default="." />/ssl/jetty.jks</Set>
          <Set name="keyStorePassword">jobscheduler</Set>
          <Set name="keyManagerPassword">jobscheduler</Set>
          <Set name="trustStore"><SystemProperty name="jetty.home" default="." />/ssl/jetty.jks</Set>
          <Set name="trustStorePassword">jobscheduler</Set>
        </New>
      </Arg>
      <Set name="port">8443</Set>
      <Set name="maxIdleTime">30000</Set>
    </New>
  </Arg>
 </Call>

The SSL connection expects the jetty keystore file jetty.jks in the subfolder ssl (under the JobScheduler data folder). With the configuration above you can connect JobScheduler via https at port 8443.
</span>

<span ih1. "keystore">

keystore

To generate a keystore file use keytool:

 keytool -genkey -alias jetty -keyalg RSA -keysize 1024 -dname "CN=[hostname], OU=JobScheduler, O=SOS GmbH, L=Berlin C=DE" -keystore jetty.jks -storepass jobscheduler -keypass jobscheduler -validity 1826

whereas hostname should be the JobScheduler host.
Use also your own values for OU, h1. _ and _L.
</span>

<span id="web">

Configure web.xml

To run JobScheduler with jetty it is also necessary to create two configuration files for the Jetty web server (jetty.xml and web.xml). It has to place in the root of your live folder (not in the config folder).

You must configure the JOC servlet with the JobScheduler installation path. Note that you must use the file protocol.

For Example:

  • file:///c:/Program Files (x86)/sos-berlin.com/jobscheduler/[scheduler_id] on Windows
  • file:///c:/Program Files (x86)/sos-berlin.com/jobscheduler/[scheduler_id] on Linux
 <?xml version="1.0" encoding="UTF-8"?>
 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
          xmlns="http://java.sun.com/xml/ns/j2ee" 
          version="2.4">
    <display-name>JobScheduler test configuration (web.xml)</display-name>
    <servlet>
        <servlet-name>Default</servlet-name>
        <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
        <init-param>
            <param-name>dirAllowed</param-name>
            <param-value>false</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>Default</servlet-name>
        
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>JOC</servlet-name>
        <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
        <init-param>
            <param-name>resourceBase</param-name>
            <param-value>file:///c:/Program Files (x86)/sos-berlin.com/jobscheduler/scheduler</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>JOC</servlet-name>
        <url-pattern>/operations_gui/*</url-pattern>
    </servlet-mapping>
 </web-app>

</span>

  • No labels