Hi Andy,

   I've tried several permutations of the merged configuration file,
but I can't get your new build of Fuseki
to accept the config file.  If you have some config file samples you'd
like me to try, I'd be happy to
do so since I have a server setup with a valid SSL cert (works fine
with Jetty 9.3.x).

Jason

On Thu, Sep 3, 2015 at 3:24 AM, Andy Seaborne <[email protected]> wrote:
> The error:
>
>> java.lang.IllegalStateException: No Method: <Call
>> name="addIfAbsentConnectionFactory"><Arg>
>>        <New class="org.eclipse.jetty.server.SslConnectionFactory"><Arg
>> name="next">http/1.1</Arg><Arg name="sslContextFactory"><Ref
>> refid="sslContextFactory"/></Arg></New>
>>      </Arg></Call> on class org.eclipse.jetty.server.Server
>
> says that the method addIfAbsentConnectionFactory is being called on Server.
> Server does not have that method but there is one on Connector.
>
> Maybe some kind of alignment problem in the configuration file?
>
>         Andy
>
>
> On 02/09/15 23:39, Jason Levitt wrote:
>>
>> Below is the combined XML config file I'm trying to use. Fuseki (your
>> Jetty v9.3.3 build) spits this error out (also below).
>> The combined config files, separately, provide SSL fine in Jetty
>> v9.3.3 but I can't get it to work in Fuseki. The only change I had to
>> make, for XML
>> syntax purposes, was changing:
>>
>> <Configure id="sslContextFactory"
>> class="org.eclipse.jetty.util.ssl.SslContextFactory">
>>
>> To this:
>>
>> <New id="sslContextFactory"
>> class="org.eclipse.jetty.util.ssl.SslContextFactory">
>>
>> ====================================
>>
>> [2015-09-02 22:36:24] Server     INFO  Jetty server config file =
>> /home/ec2-user/fuseki/jettyconfig/jettyall.xml
>> [2015-09-02 22:36:24] XmlConfiguration WARN  Config error at <Call
>> name="addIfAbsentConnectionFactory"><Arg>
>>        <New class="org.eclipse.jetty.server.SslConnectionFactory"><Arg
>> name="next">http/1.1</Arg><Arg name="sslContextFactory"><Ref
>> refid="sslContextFactory"/></Arg></New>
>>      </Arg></Call>
>> [2015-09-02 22:36:24] Server     ERROR SPARQLServer: Failed to
>> configure server: No Method: <Call
>> name="addIfAbsentConnectionFactory"><Arg>
>>        <New class="org.eclipse.jetty.server.SslConnectionFactory"><Arg
>> name="next">http/1.1</Arg><Arg name="sslContextFactory"><Ref
>> refid="sslContextFactory"/></Arg></New>
>>      </Arg></Call> on class org.eclipse.jetty.server.Server
>> java.lang.IllegalStateException: No Method: <Call
>> name="addIfAbsentConnectionFactory"><Arg>
>>        <New class="org.eclipse.jetty.server.SslConnectionFactory"><Arg
>> name="next">http/1.1</Arg><Arg name="sslContextFactory"><Ref
>> refid="sslContextFactory"/></Arg></New>
>>      </Arg></Call> on class org.eclipse.jetty.server.Server
>> at
>> org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.call(XmlConfiguration.java:734)
>> at
>> org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:417)
>> at
>> org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:300)
>> at
>> org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:245)
>> at
>> org.apache.jena.fuseki.jetty.JettyFuseki.configServer(JettyFuseki.java:265)
>> at
>> org.apache.jena.fuseki.jetty.JettyFuseki.buildServerWebapp(JettyFuseki.java:222)
>> at org.apache.jena.fuseki.jetty.JettyFuseki.<init>(JettyFuseki.java:91)
>> at
>> org.apache.jena.fuseki.jetty.JettyFuseki.initializeServer(JettyFuseki.java:86)
>> at
>> org.apache.jena.fuseki.cmd.FusekiCmd$FusekiCmdInner.exec(FusekiCmd.java:335)
>> at jena.cmd.CmdMain.mainMethod(CmdMain.java:93)
>> at jena.cmd.CmdMain.mainRun(CmdMain.java:58)
>> at jena.cmd.CmdMain.mainRun(CmdMain.java:45)
>> at
>> org.apache.jena.fuseki.cmd.FusekiCmd$FusekiCmdInner.innerMain(FusekiCmd.java:96)
>> at org.apache.jena.fuseki.cmd.FusekiCmd.main(FusekiCmd.java:59)
>> Caused by: java.lang.NoSuchMethodException: addIfAbsentConnectionFactory
>> at org.eclipse.jetty.util.TypeUtil.call(TypeUtil.java:552)
>> at
>> org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.call(XmlConfiguration.java:726)
>> ... 13 more
>> org.apache.jena.fuseki.FusekiException: Failed to configure a server
>> using configuration file
>> '/home/ec2-user/fuseki/jettyconfig/jettyall.xml'
>> at
>> org.apache.jena.fuseki.jetty.JettyFuseki.configServer(JettyFuseki.java:269)
>> at
>> org.apache.jena.fuseki.jetty.JettyFuseki.buildServerWebapp(JettyFuseki.java:222)
>> at org.apache.jena.fuseki.jetty.JettyFuseki.<init>(JettyFuseki.java:91)
>> at
>> org.apache.jena.fuseki.jetty.JettyFuseki.initializeServer(JettyFuseki.java:86)
>> at
>> org.apache.jena.fuseki.cmd.FusekiCmd$FusekiCmdInner.exec(FusekiCmd.java:335)
>> at jena.cmd.CmdMain.mainMethod(CmdMain.java:93)
>> at jena.cmd.CmdMain.mainRun(CmdMain.java:58)
>> at jena.cmd.CmdMain.mainRun(CmdMain.java:45)
>> at
>> org.apache.jena.fuseki.cmd.FusekiCmd$FusekiCmdInner.innerMain(FusekiCmd.java:96)
>> at org.apache.jena.fuseki.cmd.FusekiCmd.main(FusekiCmd.java:59)
>>
>> ============================
>>
>> jettyall.xml file:
>>
>>
>> <?xml version="1.0"?>
>> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
>> "http://www.eclipse.org/jetty/configure_9_3.dtd";>
>>
>> <Configure id="Server" class="org.eclipse.jetty.server.Server">
>>
>>      <Get name="ThreadPool">
>>        <Set name="minThreads" type="int"><Property
>> name="jetty.threadPool.minThreads" deprecated="threads.min"
>> default="10"/></Set>
>>        <Set name="maxThreads" type="int"><Property
>> name="jetty.threadPool.maxThreads" deprecated="threads.max"
>> default="200"/></Set>
>>        <Set name="idleTimeout" type="int"><Property
>> name="jetty.threadPool.idleTimeout" deprecated="threads.timeout"
>> default="60000"/></Set>
>>        <Set name="detailedDump">false</Set>
>>      </Get>
>>
>>      <!-- =========================================================== -->
>>      <!-- Add shared Scheduler instance                               -->
>>      <!-- =========================================================== -->
>>      <Call name="addBean">
>>        <Arg>
>>          <New
>> class="org.eclipse.jetty.util.thread.ScheduledExecutorScheduler"/>
>>        </Arg>
>>      </Call>
>>
>>      <!-- =========================================================== -->
>>      <!-- Http Configuration.                                         -->
>>      <!-- This is a common configuration instance used by all         -->
>>      <!-- connectors that can carry HTTP semantics (HTTP, HTTPS, etc.)-->
>>      <!-- It configures the non wire protocol aspects of the HTTP     -->
>>      <!-- semantic.                                                   -->
>>      <!--                                                             -->
>>      <!-- This configuration is only defined here and is used by      -->
>>      <!-- reference from other XML files such as jetty-http.xml,      -->
>>      <!-- jetty-https.xml and other configuration files which         -->
>>      <!-- instantiate the connectors.                                 -->
>>      <!--                                                             -->
>>      <!-- Consult the javadoc of o.e.j.server.HttpConfiguration       -->
>>      <!-- for all configuration that may be set here.                 -->
>>      <!-- =========================================================== -->
>>      <New id="httpConfig"
>> class="org.eclipse.jetty.server.HttpConfiguration">
>>        <Set name="secureScheme"><Property
>> name="jetty.httpConfig.secureScheme" default="https" /></Set>
>>        <Set name="securePort"><Property
>> name="jetty.httpConfig.securePort" deprecated="jetty.secure.port"
>> default="8443" /></Set>
>>        <Set name="outputBufferSize"><Property
>> name="jetty.httpConfig.outputBufferSize"
>> deprecated="jetty.output.buffer.size" default="32768" /></Set>
>>        <Set name="outputAggregationSize"><Property
>> name="jetty.httpConfig.outputAggregationSize"
>> deprecated="jetty.output.aggregation.size" default="8192" /></Set>
>>        <Set name="requestHeaderSize"><Property
>> name="jetty.httpConfig.requestHeaderSize"
>> deprecated="jetty.request.header.size" default="8192" /></Set>
>>        <Set name="responseHeaderSize"><Property
>> name="jetty.httpConfig.responseHeaderSize"
>> deprecated="jetty.response.header.size" default="8192" /></Set>
>>        <Set name="sendServerVersion"><Property
>> name="jetty.httpConfig.sendServerVersion"
>> deprecated="jetty.send.server.version" default="true" /></Set>
>>        <Set name="sendDateHeader"><Property
>> name="jetty.httpConfig.sendDateHeader"
>> deprecated="jetty.send.date.header" default="false" /></Set>
>>        <Set name="headerCacheSize"><Property
>> name="jetty.httpConfig.headerCacheSize" default="512" /></Set>
>>        <Set name="delayDispatchUntilContent"><Property
>> name="jetty.httpConfig.delayDispatchUntilContent"
>> deprecated="jetty.delayDispatchUntilContent" default="true"/></Set>
>>        <!-- Uncomment to enable handling of X-Forwarded- style headers
>>        <Call name="addCustomizer">
>>          <Arg><New
>> class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg>
>>        </Call>
>>        -->
>>      </New>
>>
>>      <!-- =========================================================== -->
>>      <!-- Set the default handler structure for the Server            -->
>>      <!-- A handler collection is used to pass received requests to   -->
>>      <!-- both the ContextHandlerCollection, which selects the next   -->
>>      <!-- handler by context path and virtual host, and the           -->
>>      <!-- DefaultHandler, which handles any requests not handled by   -->
>>      <!-- the context handlers.                                       -->
>>      <!-- Other handlers may be added to the "Handlers" collection,   -->
>>      <!-- for example the jetty-requestlog.xml file adds the          -->
>>      <!-- RequestLogHandler after the default handler                 -->
>>      <!-- =========================================================== -->
>>      <Set name="handler">
>>        <New id="Handlers"
>> class="org.eclipse.jetty.server.handler.HandlerCollection">
>>          <Set name="handlers">
>>           <Array type="org.eclipse.jetty.server.Handler">
>>             <Item>
>>               <New id="Contexts"
>> class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
>>             </Item>
>>             <Item>
>>               <New id="DefaultHandler"
>> class="org.eclipse.jetty.server.handler.DefaultHandler"/>
>>             </Item>
>>           </Array>
>>          </Set>
>>        </New>
>>      </Set>
>>
>>      <!-- =========================================================== -->
>>      <!-- extra server options                                        -->
>>      <!-- =========================================================== -->
>>      <Set name="stopAtShutdown"><Property
>> name="jetty.server.stopAtShutdown" default="true"/></Set>
>>      <Set name="stopTimeout">5000</Set>
>>      <Set name="dumpAfterStart"><Property
>> name="jetty.server.dumpAfterStart" deprecated="jetty.dump.start"
>> default="false"/></Set>
>>      <Set name="dumpBeforeStop"><Property
>> name="jetty.server.dumpBeforeStop" deprecated="jetty.dump.stop"
>> default="false"/></Set>
>>
>> <!-- ============================================================= -->
>> <!-- Configure the Jetty Server instance with an ID "Server"       -->
>> <!-- by adding a HTTP connector.                                   -->
>> <!-- This configuration must be used in conjunction with jetty.xml -->
>> <!-- ============================================================= -->
>>
>>    <!-- =========================================================== -->
>>    <!-- Add a HTTP Connector.                                       -->
>>    <!-- Configure an o.e.j.server.ServerConnector with a single     -->
>>    <!-- HttpConnectionFactory instance using the common httpConfig  -->
>>    <!-- instance defined in jetty.xml                               -->
>>    <!--                                                             -->
>>    <!-- Consult the javadoc of o.e.j.server.ServerConnector and     -->
>>    <!-- o.e.j.server.HttpConnectionFactory for all configuration    -->
>>    <!-- that may be set here.                                       -->
>>    <!-- =========================================================== -->
>>    <Call name="addConnector">
>>      <Arg>
>>        <New id="httpConnector"
>> class="org.eclipse.jetty.server.ServerConnector">
>>          <Arg name="server"><Ref refid="Server" /></Arg>
>>          <Arg name="acceptors" type="int"><Property
>> name="jetty.http.acceptors" deprecated="http.acceptors"
>> default="-1"/></Arg>
>>          <Arg name="selectors" type="int"><Property
>> name="jetty.http.selectors" deprecated="http.selectors"
>> default="-1"/></Arg>
>>          <Arg name="factories">
>>            <Array type="org.eclipse.jetty.server.ConnectionFactory">
>>              <!-- uncomment to support proxy protocol
>>              <Item>
>>                <New
>> class="org.eclipse.jetty.server.ProxyConnectionFactory"/>
>>              </Item>-->
>>              <Item>
>>                <New
>> class="org.eclipse.jetty.server.HttpConnectionFactory">
>>                  <Arg name="config"><Ref refid="httpConfig" /></Arg>
>>                </New>
>>              </Item>
>>            </Array>
>>          </Arg>
>>          <Set name="host"><Property name="jetty.http.host"
>> deprecated="jetty.host" /></Set>
>>          <Set name="port"><Property name="jetty.http.port"
>> deprecated="jetty.port" default="8080" /></Set>
>>          <Set name="idleTimeout"><Property
>> name="jetty.http.idleTimeout" deprecated="http.timeout"
>> default="30000"/></Set>
>>          <Set name="soLingerTime"><Property
>> name="jetty.http.soLingerTime" deprecated="http.soLingerTime"
>> default="-1"/></Set>
>>          <Set name="acceptorPriorityDelta"><Property
>> name="jetty.http.acceptorPriorityDelta"
>> deprecated="http.acceptorPriorityDelta" default="0"/></Set>
>>          <Set name="acceptQueueSize"><Property
>> name="jetty.http.acceptQueueSize" deprecated="http.acceptQueueSize"
>> default="0"/></Set>
>>        </New>
>>      </Arg>
>>    </Call>
>>
>> <!-- ============================================================= -->
>> <!-- Configure a HTTPS connector.                                  -->
>> <!-- This configuration must be used in conjunction with jetty.xml -->
>> <!-- and jetty-ssl.xml.                                            -->
>> <!-- ============================================================= -->
>>
>>    <Call name="addIfAbsentConnectionFactory">
>>      <Arg>
>>        <New class="org.eclipse.jetty.server.SslConnectionFactory">
>>          <Arg name="next">http/1.1</Arg>
>>          <Arg name="sslContextFactory"><Ref
>> refid="sslContextFactory"/></Arg>
>>        </New>
>>      </Arg>
>>    </Call>
>>
>>    <Call name="addConnectionFactory">
>>      <Arg>
>>        <New class="org.eclipse.jetty.server.HttpConnectionFactory">
>>          <Arg name="config"><Ref refid="sslHttpConfig" /></Arg>
>>        </New>
>>      </Arg>
>>    </Call>
>>
>>
>> <!-- ============================================================= -->
>> <!-- Base SSL configuration                                        -->
>> <!-- This configuration needs to be used together with 1 or more   -->
>> <!-- of jetty-https.xml or jetty-http2.xml                         -->
>> <!-- ============================================================= -->
>>
>>    <!-- =========================================================== -->
>>    <!-- Add a SSL Connector with no protocol factories              -->
>>    <!-- =========================================================== -->
>>    <Call  name="addConnector">
>>      <Arg>
>>        <New id="sslConnector"
>> class="org.eclipse.jetty.server.ServerConnector">
>>          <Arg name="server"><Ref refid="Server" /></Arg>
>>          <Arg name="acceptors" type="int"><Property
>> name="jetty.ssl.acceptors" deprecated="ssl.acceptors"
>> default="-1"/></Arg>
>>          <Arg name="selectors" type="int"><Property
>> name="jetty.ssl.selectors" deprecated="ssl.selectors"
>> default="-1"/></Arg>
>>          <Arg name="factories">
>>            <Array type="org.eclipse.jetty.server.ConnectionFactory">
>>              <!-- uncomment to support proxy protocol
>>              <Item>
>>                <New
>> class="org.eclipse.jetty.server.ProxyConnectionFactory"/>
>>              </Item>-->
>>            </Array>
>>          </Arg>
>>
>>          <Set name="host"><Property name="jetty.ssl.host"
>> deprecated="jetty.host" /></Set>
>>          <Set name="port"><Property name="jetty.ssl.port"
>> deprecated="ssl.port" default="8443" /></Set>
>>          <Set name="idleTimeout"><Property name="jetty.ssl.idleTimeout"
>> deprecated="ssl.timeout" default="30000"/></Set>
>>          <Set name="soLingerTime"><Property
>> name="jetty.ssl.soLingerTime" deprecated="ssl.soLingerTime"
>> default="-1"/></Set>
>>          <Set name="acceptorPriorityDelta"><Property
>> name="jetty.ssl.acceptorPriorityDelta"
>> deprecated="ssl.acceptorPriorityDelta" default="0"/></Set>
>>          <Set name="acceptQueueSize"><Property
>> name="jetty.ssl.acceptQueueSize" deprecated="ssl.acceptQueueSize"
>> default="0"/></Set>
>>        </New>
>>      </Arg>
>>    </Call>
>>
>>    <!-- =========================================================== -->
>>    <!-- Create a TLS specific HttpConfiguration based on the        -->
>>    <!-- common HttpConfiguration defined in jetty.xml               -->
>>    <!-- Add a SecureRequestCustomizer to extract certificate and    -->
>>    <!-- session information                                         -->
>>    <!-- =========================================================== -->
>>    <New id="sslHttpConfig"
>> class="org.eclipse.jetty.server.HttpConfiguration">
>>      <Arg><Ref refid="httpConfig"/></Arg>
>>      <Call name="addCustomizer">
>>        <Arg>
>>          <New class="org.eclipse.jetty.server.SecureRequestCustomizer">
>>            <Arg type="boolean"><Property name="jetty.ssl.sniHostCheck"
>> default="true"/></Arg>
>>          </New>
>>        </Arg>
>>      </Call>
>>    </New>
>>
>> <!-- ============================================================= -->
>> <!-- SSL ContextFactory configuration                              -->
>> <!-- ============================================================= -->
>> <!-- Configure id="sslContextFactory"
>> class="org.eclipse.jetty.util.ssl.SslContextFactory" -->
>>
>> <New id="sslContextFactory"
>> class="org.eclipse.jetty.util.ssl.SslContextFactory">
>>    <Set name="KeyStorePath"><Property name="jetty.base" default="."
>> />/<Property name="jetty.sslContext.keyStorePath"
>> deprecated="jetty.keystore" default="etc/keystore"/></Set>
>>    <Set name="KeyStorePassword"><Property
>> name="jetty.sslContext.keyStorePassword"
>> deprecated="jetty.keystore.password" default="MyPassword" /></Set>
>>    <Set name="KeyStoreType"><Property
>> name="jetty.sslContext.keyStoreType" default="JKS"/></Set>
>>    <Set name="KeyStoreProvider"><Property
>> name="jetty.sslContext.keyStoreProvider"/></Set>
>>    <Set name="KeyManagerPassword"><Property
>> name="jetty.sslContext.keyManagerPassword"
>> deprecated="jetty.keymanager.password" default="MyPassword" /></Set>
>>    <Set name="TrustStorePath"><Property name="jetty.base" default="."
>> />/<Property name="jetty.sslContext.trustStorePath"
>> deprecated="jetty.truststore" default="etc/keystore"/></Set>
>>    <Set name="TrustStorePassword"><Property
>> name="jetty.sslContext.trustStorePassword"
>> deprecated="jetty.truststore.password" default="MyPassword" /></Set>
>>    <Set name="TrustStoreType"><Property
>> name="jetty.sslContext.trustStoreType" default="JKS"/></Set>
>>    <Set name="TrustStoreProvider"><Property
>> name="jetty.sslContext.trustStoreProvider"/></Set>
>>    <Set name="EndpointIdentificationAlgorithm"></Set>
>>    <Set name="NeedClientAuth"><Property
>> name="jetty.sslContext.needClientAuth"
>> deprecated="jetty.ssl.needClientAuth" default="false"/></Set>
>>    <Set name="WantClientAuth"><Property
>> name="jetty.sslContext.wantClientAuth"
>> deprecated="jetty.ssl.wantClientAuth" default="false"/></Set>
>>    <Set name="ExcludeCipherSuites">
>>     <Array type="String">
>>      <Item>SSL_RSA_WITH_DES_CBC_SHA</Item>
>>      <Item>SSL_DHE_RSA_WITH_DES_CBC_SHA</Item>
>>      <Item>SSL_DHE_DSS_WITH_DES_CBC_SHA</Item>
>>      <Item>SSL_RSA_EXPORT_WITH_RC4_40_MD5</Item>
>>      <Item>SSL_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
>>      <Item>SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
>>      <Item>SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA</Item>
>>     </Array>
>>    </Set>
>>    <Set name="useCipherSuitesOrder"><Property
>> name="jetty.sslContext.useCipherSuitesOrder" default="true"/></Set>
>> </New>
>>
>> </Configure>
>>
>> ===================================
>>
>> On Wed, Sep 2, 2015 at 2:46 PM, Jason Levitt <[email protected]>
>> wrote:
>>>
>>> I can get Jetty 9.3.3 to work over SSL with these four files, but I
>>> cannot figure out a way to
>>> put them into one file (required by fuseki) to get SSL working with
>>> fuseki:
>>>
>>> jetty.xml
>>>
>>> <?xml version="1.0"?>
>>> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
>>> "http://www.eclipse.org/jetty/configure_9_3.dtd";>
>>>
>>> <Configure id="Server" class="org.eclipse.jetty.server.Server">
>>>
>>>      <New id="httpConfig"
>>> class="org.eclipse.jetty.server.HttpConfiguration">
>>>        <Set name="secureScheme"><Property
>>> name="jetty.httpConfig.secureScheme" default="https" /></Set>
>>>        <Set name="securePort"><Property
>>> name="jetty.httpConfig.securePort" deprecated="jetty.secure.port"
>>> default="8443" /></Set>
>>>        <Set name="outputBufferSize"><Property
>>> name="jetty.httpConfig.outputBufferSize"
>>> deprecated="jetty.output.buffer.size" default="32768" /></Set>
>>>        <Set name="outputAggregationSize"><Property
>>> name="jetty.httpConfig.outputAggregationSize"
>>> deprecated="jetty.output.aggregation.size" default="8192" /></Set>
>>>        <Set name="requestHeaderSize"><Property
>>> name="jetty.httpConfig.requestHeaderSize"
>>> deprecated="jetty.request.header.size" default="8192" /></Set>
>>>        <Set name="responseHeaderSize"><Property
>>> name="jetty.httpConfig.responseHeaderSize"
>>> deprecated="jetty.response.header.size" default="8192" /></Set>
>>>        <Set name="sendServerVersion"><Property
>>> name="jetty.httpConfig.sendServerVersion"
>>> deprecated="jetty.send.server.version" default="true" /></Set>
>>>        <Set name="sendDateHeader"><Property
>>> name="jetty.httpConfig.sendDateHeader"
>>> deprecated="jetty.send.date.header" default="false" /></Set>
>>>        <Set name="headerCacheSize"><Property
>>> name="jetty.httpConfig.headerCacheSize" default="512" /></Set>
>>>        <Set name="delayDispatchUntilContent"><Property
>>> name="jetty.httpConfig.delayDispatchUntilContent"
>>> deprecated="jetty.delayDispatchUntilContent" default="true"/></Set>
>>>      </New>
>>>
>>> </Configure>
>>>
>>> jetty-http.xml
>>>
>>> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
>>> "http://www.eclipse.org/jetty/configure_9_3.dtd";>
>>>
>>>    <Call name="addConnector">
>>>      <Arg>
>>>        <New id="httpConnector"
>>> class="org.eclipse.jetty.server.ServerConnector">
>>>          <Arg name="server"><Ref refid="Server" /></Arg>
>>>          <Arg name="acceptors" type="int"><Property
>>> name="jetty.http.acceptors" deprecated="http.acceptors"
>>> default="-1"/></Arg>
>>>          <Arg name="selectors" type="int"><Property
>>> name="jetty.http.selectors" deprecated="http.selectors"
>>> default="-1"/></Arg>
>>>          <Arg name="factories">
>>>            <Array type="org.eclipse.jetty.server.ConnectionFactory">
>>>              <!-- uncomment to support proxy protocol
>>>              <Item>
>>>                <New
>>> class="org.eclipse.jetty.server.ProxyConnectionFactory"/>
>>>              </Item>-->
>>>              <Item>
>>>                <New
>>> class="org.eclipse.jetty.server.HttpConnectionFactory">
>>>                  <Arg name="config"><Ref refid="httpConfig" /></Arg>
>>>                </New>
>>>              </Item>
>>>            </Array>
>>>          </Arg>
>>>          <Set name="host"><Property name="jetty.http.host"
>>> deprecated="jetty.host" /></Set>
>>>          <Set name="port"><Property name="jetty.http.port"
>>> deprecated="jetty.port" default="8080" /></Set>
>>>          <Set name="idleTimeout"><Property
>>> name="jetty.http.idleTimeout" deprecated="http.timeout"
>>> default="30000"/></Set>
>>>          <Set name="soLingerTime"><Property
>>> name="jetty.http.soLingerTime" deprecated="http.soLingerTime"
>>> default="-1"/></Set>
>>>          <Set name="acceptorPriorityDelta"><Property
>>> name="jetty.http.acceptorPriorityDelta"
>>> deprecated="http.acceptorPriorityDelta" default="0"/></Set>
>>>          <Set name="acceptQueueSize"><Property
>>> name="jetty.http.acceptQueueSize" deprecated="http.acceptQueueSize"
>>> default="0"/></Set>
>>>        </New>
>>>      </Arg>
>>>    </Call>
>>>
>>> </Configure>
>>>
>>>
>>> jetty-https.xml
>>>
>>> <?xml version="1.0"?>
>>> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
>>> "http://www.eclipse.org/jetty/configure_9_3.dtd";>
>>>
>>> <Configure id="sslConnector"
>>> class="org.eclipse.jetty.server.ServerConnector">
>>>
>>>    <Call name="addIfAbsentConnectionFactory">
>>>      <Arg>
>>>        <New class="org.eclipse.jetty.server.SslConnectionFactory">
>>>          <Arg name="next">http/1.1</Arg>
>>>          <Arg name="sslContextFactory"><Ref
>>> refid="sslContextFactory"/></Arg>
>>>        </New>
>>>      </Arg>
>>>    </Call>
>>>
>>>    <Call name="addConnectionFactory">
>>>      <Arg>
>>>        <New class="org.eclipse.jetty.server.HttpConnectionFactory">
>>>          <Arg name="config"><Ref refid="sslHttpConfig" /></Arg>
>>>        </New>
>>>      </Arg>
>>>    </Call>
>>>
>>> </Configure>
>>>
>>> jetty-ssl-context.xml
>>>
>>> <?xml version="1.0"?>
>>> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
>>> "http://www.eclipse.org/jetty/configure_9_3.dtd";>
>>>
>>> <Configure id="sslContextFactory"
>>> class="org.eclipse.jetty.util.ssl.SslContextFactory">
>>>
>>>    <Set name="KeyStorePath"><Property name="jetty.base" default="."
>>> />/<Property name="jetty.sslContext.keyStorePath"
>>> deprecated="jetty.keystore" default="etc/keystore"/></Set>
>>>    <Set name="KeyStorePassword"><Property
>>> name="jetty.sslContext.keyStorePassword"
>>> deprecated="jetty.keystore.password" />MyPassword</Set>
>>>    <Set name="KeyStoreType"><Property
>>> name="jetty.sslContext.keyStoreType" default="JKS"/></Set>
>>>    <Set name="KeyStoreProvider"><Property
>>> name="jetty.sslContext.keyStoreProvider"/></Set>
>>>    <Set name="KeyManagerPassword"><Property
>>> name="jetty.sslContext.keyManagerPassword"
>>> deprecated="jetty.keymanager.password" />MyPassword</Set>
>>>    <Set name="TrustStorePath"><Property name="jetty.base" default="."
>>> />/<Property name="jetty.sslContext.trustStorePath"
>>> deprecated="jetty.truststore" default="etc/keystore"/></Set>
>>>    <Set name="TrustStorePassword"><Property
>>> name="jetty.sslContext.trustStorePassword"
>>> deprecated="jetty.truststore.password" />MyPassword</Set>
>>>    <Set name="TrustStoreType"><Property
>>> name="jetty.sslContext.trustStoreType" default="JKS"/></Set>
>>>    <Set name="TrustStoreProvider"><Property
>>> name="jetty.sslContext.trustStoreProvider"/></Set>
>>>    <Set name="EndpointIdentificationAlgorithm"></Set>
>>>    <Set name="NeedClientAuth"><Property
>>> name="jetty.sslContext.needClientAuth"
>>> deprecated="jetty.ssl.needClientAuth" default="false"/></Set>
>>>    <Set name="WantClientAuth"><Property
>>> name="jetty.sslContext.wantClientAuth"
>>> deprecated="jetty.ssl.wantClientAuth" default="false"/></Set>
>>>    <Set name="ExcludeCipherSuites">
>>>     <Array type="String">
>>>      <Item>SSL_RSA_WITH_DES_CBC_SHA</Item>
>>>      <Item>SSL_DHE_RSA_WITH_DES_CBC_SHA</Item>
>>>      <Item>SSL_DHE_DSS_WITH_DES_CBC_SHA</Item>
>>>      <Item>SSL_RSA_EXPORT_WITH_RC4_40_MD5</Item>
>>>      <Item>SSL_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
>>>      <Item>SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
>>>      <Item>SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA</Item>
>>>     </Array>
>>>    </Set>
>>>    <Set name="useCipherSuitesOrder"><Property
>>> name="jetty.sslContext.useCipherSuitesOrder" default="true"/></Set>
>>> </Configure>
>>>
>>> ================
>>>
>>> On Wed, Sep 2, 2015 at 8:18 AM, Andy Seaborne <[email protected]> wrote:
>>>>
>>>> Hi Jason,
>>>>
>>>> I have made some progress with your config.
>>>>
>>>> 1/ I switched the development code to 9.3.3 so we have one target and
>>>> because I got that version to work with your config
>>>>
>>>> 9.3.3. was release 27/Aug/2015.
>>>>
>>>> Don't know if your working from the source or not so I did a development
>>>> build of Fuseki2 with 9.3.3.
>>>>
>>>>
>>>> https://repository.apache.org/content/repositories/snapshots/org/apache/jena/apache-jena-fuseki/2.3.1-SNAPSHOT/
>>>>
>>>> NB There are 2 builds for today - latest with Jetty 9.3.3 is
>>>>
>>>>    20150902.121407-19
>>>>
>>>> 2/ Fix for your config file below.
>>>>     Needs some details from jetty.xml copied into it.
>>>>
>>>>          Andy
>>>>
>>>> On 01/09/15 20:36, Jason Levitt wrote:
>>>>>
>>>>>
>>>>> Back to square one.
>>>>>
>>>>> This Jetty config file works fine with Jetty 9:
>>>>
>>>>
>>>>
>>>> Which jetty version?  I'm seeing differences between 9.1.1 and 9.3.3
>>>>
>>>> With 9.3.2 I get a different error, more useful error (yes, I was using
>>>> 9.3.2 at that point)
>>>>
>>>> [2015-09-02 12:24:37] Server     ERROR SPARQLServer: Failed to configure
>>>> server: null
>>>> java.lang.reflect.InvocationTargetException
>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>>>>
>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>>>>
>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>>>> java.lang.reflect.Constructor.newInstance(Constructor.java:422)
>>>> org.eclipse.jetty.util.TypeUtil.construct(TypeUtil.java:627)
>>>>
>>>> org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:782)
>>>>
>>>> which looks to be caused by:
>>>>
>>>>>       <New class="org.eclipse.jetty.server.HttpConnectionFactory">
>>>>>          <Arg name="config"><Ref refid="httpConfig" /></Arg>
>>>>>       </New>
>>>>
>>>>
>>>> and httpConfig is not defined.  (I debug traced the Jetty code).
>>>>
>>>> It says higher up:
>>>>
>>>>   <!-- HttpConnectionFactory instance using the common httpConfig  -->
>>>>   <!-- instance defined in jetty.xml
>>>>
>>>>
>>>> I copied the block from jetty.xml 9.3.3 into you configuration:
>>>> <New id="httpConfig"
>>>> </New>
>>>>
>>>> Full copy below.
>>>>
>>>> This is for 9.3.3 only - I tried the same approach with 9.1.1 and it
>>>> didn't
>>>> work.  Maybe my user error, maybe because your config makes a 9.3
>>>> specific
>>>> call.  Rather than worry about that, I switched the development code
>>>> base to
>>>> 9.3.3.
>>>>
>>>> Hey presto - server runs for me.  Confirmed it is using the config by
>>>> changing the port but that's all the testing I have time for ATM.
>>>> (Looking
>>>> for a job (= employment) can be quite time consuming!)
>>>>
>>>>          Andy
>>>>
>>>>
>>>> ------------------------------------------------------------
>>>> Copy of new section, reformatted for email :-| , inserted before <Call>
>>>>
>>>> <Configure id="Server" class="org.eclipse.jetty.server.Server">
>>>>    <New
>>>>      ....
>>>>    </New>
>>>>
>>>>    <Call name="addConnector">
>>>>     </Call>
>>>>
>>>>
>>>> </Configure>
>>>>
>>>> --------- Full insert
>>>>
>>>>
>>>> <New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
>>>>    <Set name="secureScheme">
>>>>      <Property name="jetty.httpConfig.secureScheme"
>>>>                default="https" />
>>>>    </Set>
>>>>    <Set name="securePort">
>>>>      <Property name="jetty.httpConfig.securePort"
>>>>                deprecated="jetty.secure.port"
>>>>                default="8443" />
>>>>    </Set>
>>>>    <Set name="outputBufferSize">
>>>>      <Property name="jetty.httpConfig.outputBufferSize"
>>>>                deprecated="jetty.output.buffer.size"
>>>>                default="32768" />
>>>>    </Set>
>>>>    <Set name="outputAggregationSize">
>>>>      <Property name="jetty.httpConfig.outputAggregationSize"
>>>>                deprecated="jetty.output.aggregation.size"
>>>>                default="8192" />
>>>>    </Set>
>>>>    <Set name="requestHeaderSize">
>>>>      <Property name="jetty.httpConfig.requestHeaderSize"
>>>>                deprecated="jetty.request.header.size"
>>>>                default="8192" />
>>>>    </Set>
>>>>    <Set name="responseHeaderSize">
>>>>      <Property name="jetty.httpConfig.responseHeaderSize"
>>>>                deprecated="jetty.response.header.size"
>>>>                default="8192" />
>>>>    </Set>
>>>>    <Set name="sendServerVersion">
>>>>      <Property name="jetty.httpConfig.sendServerVersion"
>>>>                deprecated="jetty.send.server.version"
>>>>                default="true" />
>>>>    </Set>
>>>>    <Set name="sendDateHeader">
>>>>      <Property name="jetty.httpConfig.sendDateHeader"
>>>>                deprecated="jetty.send.date.header"
>>>>                default="false" />
>>>>    </Set>
>>>>    <Set name="headerCacheSize">
>>>>      <Property name="jetty.httpConfig.headerCacheSize"
>>>>                default="512" />
>>>>    </Set>
>>>>    <Set name="delayDispatchUntilContent">
>>>>      <Property name="jetty.httpConfig.delayDispatchUntilContent"
>>>>                deprecated="jetty.delayDispatchUntilContent"
>>>>                default="true"/>
>>>>    </Set>
>>>>    <Set name="maxErrorDispatches">
>>>>      <Property name="jetty.httpConfig.maxErrorDispatches"
>>>>                default="10"/>
>>>>    </Set>
>>>>    <!-- Uncomment to enable handling of X-Forwarded- style headers
>>>>         <Call name="addCustomizer">
>>>>           <Arg><New
>>>> class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg>
>>>>    </Call>
>>>>    -->
>>>> </New>
>>>>
>

Reply via email to