Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] Communication between a Servlet and a custom protocol

Hi Simone,

Thank you for the suggestion.  I tried it but it didn't work because getServer() returns null at the time the WebAppContext instance is configured.  

Instead, I tried a slight variation on your idea.  I added the connector and the WebAppContext handler explicitly to the server calling setHandler (see below).  Do you think this is a reasonable way to do it?

Thanks,
Josh

<Configure id="Server" class="org.eclipse.jetty.server.Server">


  <Map id="myContext">

    ...

  </Map>


  <Set name="Handler">

    <New class="org.eclipse.jetty.webapp.WebAppContext">

      <Set name="contextPath">/mywar</Set>

      <Set name="war">mywar.war</Set>

      <Get name="ServletContext">

        <Call name="setAttribute">

          <Arg>adb-context</Arg>

          <Arg><Ref refid="myContext"/></Arg>

        </Call>

      </Get>

    </New>

  </Set>


    <Call name="addConnector">

    <Arg>

      <New id="myConnector" class="org.eclipse.jetty.server.ServerConnector">

        <Arg name="server"><Ref refid="Server"/></Arg>

        <Arg name="factories"><Array type="org.eclipse.jetty.server.ConnectionFactory"/></Arg>

      </New>

    </Arg>

  </Call>


  <Ref refid="myConnector">

    <Call name="addConnectionFactory">

      <Arg>

        <New class="com.example.TestConnectionFactory">

          <Arg><Ref refid="myContext"/></Arg>

        </New>

      </Arg>

    </Call>

  </Ref>

</Configure>






On Mon, Jan 20, 2020 at 8:56 AM Simone Bordet <sbordet@xxxxxxxxxxx> wrote:
Hi,

On Mon, Jan 20, 2020 at 4:53 PM Josh Spiegel <joshlakewg@xxxxxxxxx> wrote:
>
> I have the ConnectionFactory and the Connection implementations.
> I have the Servlet (deployed in a war file)
>
> The ConnectionFactory/Connection are deployed using a Jetty module/xml with start.jar.
> The servlet is deployed by dropping the war file in webapps.
>
> I have some dynamic state (mainly database connection pools) that I would like to share between the ConnectionFactory and the Servlet.
>
> I can set the state object as a context attribute from the servlet.  However, then it isn't clear to me how I would retrieve it from either the ConnectionFactory or Connection.

I would create your shared state bean, and add it as a Server
attribute - this can be done via a Jetty XML file and module like you
have already done.
This bean would then be easily retrievable from the ConnectionFactory
implementation, and passed to Connections.

You can then have a custom context XML file for your webapp, that
retrieves the bean from the server and sets it as a context attribute.
This file can be something like (pseudo code to convert to XML):

Server server = this.getServer();
Object bean = server.getAttribute("mySharedBean");
this.setAttribute("mySharedBean", bean);

where "this" is a WebAppContext (as per Jetty context XML file).

--
Simone Bordet
----
http://cometd.org
http://webtide.com
Developer advice, training, services and support
from the Jetty & CometD experts.
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users

Back to the top