【问题标题】:Clojure, Servlet and JWTClojure、Servlet 和 JWT
【发布时间】:2012-08-16 04:04:08
【问题描述】:

编辑:有关工作示例,请查看this demo project

免责声明:在构建 Java Web 应用程序方面,我是一个菜鸟

我正在尝试将JWT 与 Clojure 一起使用,但我根本不知道如何处理这个“servlet”的东西。到目前为止,我的想法是:

  1. 使用“Hello World”表单创建WApplication

    (defn make-hello-app [env]
      (let [wapp (WApplication. env)
            root (.getRoot wapp)]
        (.setTitle wapp "Hello world")
        (.addWidget root (WText. "Hello!!!!"))
        wapp))
    
  2. 创建一个 servlet,继承自 WtServlet

    (def servlet
      (proxy [WtServlet] []
        (createApplication [env]
          (make-hello-app env))))
    
  3. 启动码头并使用 servlet。这是我不知道该怎么做。到目前为止,这是我最好的拍摄:

    (ns jwttest.core
      (:use compojure.core)
      (:use ring.adapter.jetty)
      (:import (org.eclipse.jetty.server Server))
      (:import (eu.webtoolkit.jwt WApplication WEnvironment WtServlet WText WPushButton WLineEdit WBreak)))
    
    ;; (the funcions above were defined here)
    
    ;; create a jetty server
    (defn create-a-jetty-server []
      (let [connector (doto (SelectChannelConnector.)
                            (.setPort 8080)
                            (.setHost "localhost"))
         server (doto (Server.)
                      (.addConnector connector)
                      (.setSendDateHeader true))]
         server))
    
     ;; start the application
     (defn start-the-app []
       (let [server (create-a-jetty-server)]
          ;; ???? .addServlet ? How?
          (.start server)))
    

在我的project.clj 我有:

[org.clojure/clojure "1.4.0"]
[eu.webtoolkit/jwt "3.2.0"]
[compojure "1.1.1"]
[ring "1.1.2"]

我知道 ring 可以从处理程序创建一个 servlet,但在这种情况下,我已经有一个 servlet,所以......我应该怎么做才能运行它?

注意:我的代码基于此very old post made in 2009

【问题讨论】:

    标签: servlets clojure jetty jwt


    【解决方案1】:

    我挖掘了一些 Jetty APIRing/Noir 码头处理代码,这是我发现的摘要(但还没有机会测试)

    • Jetty 服务器有一个“setHandler”方法,它接受一个处理程序(感谢 Ring)
    • 有一个 ServletHandler 类,看起来很适合上面的内容,它有许多类似 addServlet 的方法,看起来就像他们做你需要的那样。

    您应该能够将处理程序设置为 Servlet 处理程序并从那里开始。

    【讨论】:

    • 谢谢!这个答案不是“准确的”,而是极大地帮助构建了一个工作样本!我会将工作代码添加到我的问题中。
    猜你喜欢
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 2016-04-04
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    相关资源
    最近更新 更多