1

私は Dropwizard の完全な初心者で、チュートリアル ( http://dropwizard.codahale.com/manual/views/#manual-views ) に従って単純なフリーマーカー ベースのビューを実装しようとしています。まさにその通りに実行しましたが、アプリを起動してブラウザでhttp://localhost:8080/user jetty に移動すると、404 が返されます。

package com.example.views;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/user")
@Produces(MediaType.TEXT_HTML)
public class UserResource
{

    @GET
    public UserView getUser()
    {
        return new UserView();
    }
}


package com.example.views;

import com.yammer.dropwizard.views.View;

public class UserView extends View {

    public UserView() {
        super("user.ftl");
    }

}

package com.example.service;

import com.yammer.dropwizard.ConfiguredBundle;
import com.yammer.dropwizard.Service;
import com.yammer.dropwizard.config.Bootstrap;
import com.yammer.dropwizard.config.Environment;
import com.yammer.dropwizard.views.ViewBundle;

public class WebCoreApplication extends Service<WebCoreConfiguration> {
    private final ConfiguredBundle[] bundles;

    public WebCoreApplication(ConfiguredBundle...bundles) {
        this.bundles = bundles;
    }

    @Override
    public void initialize(Bootstrap<WebCoreConfiguration> bootstrap) {
        for(ConfiguredBundle bundle : bundles) {
            bootstrap.addBundle(bundle);
        }
        bootstrap.addBundle(new ViewBundle());
    }

    @Override
    public void run(WebCoreConfiguration configuration, Environment environment) throws Exception {
            }
}

私の user.ftl は src/main/resources/com/example/views フォルダーにあります。

私は何を間違っていますか? また、リクエストに対応するために jersey リソースを登録するにはどうすればよいですか?

4

3 に答える 3

2

サンプル ドロップウィザード サービス

Freemarker ビューを使用する標準 v0.6.2 Dropwizard アプリケーションの場合、次のコードはボイラープレートと見なすことができます。

public class OpenIDDemoService extends Service<OpenIDDemoConfiguration> {

  /**
   * Main entry point to the application
   *
   * @param args CLI arguments
   * @throws Exception
   */
  public static void main(String[] args) throws Exception {
    new OpenIDDemoService().run(args);
  }

  private OpenIDDemoService() {

  }

  @Override
  public void initialize(Bootstrap<OpenIDDemoConfiguration> openIDDemoConfigurationBootstrap) {

    // Bundles
    openIDDemoConfigurationBootstrap.addBundle(new AssetsBundle("/assets/images", "/images"));
    openIDDemoConfigurationBootstrap.addBundle(new AssetsBundle("/assets/jquery", "/jquery"));
    openIDDemoConfigurationBootstrap.addBundle(new ViewBundle());
  }

  @Override
  public void run(OpenIDDemoConfiguration openIDDemoConfiguration, Environment environment) throws Exception {
    // Configure authenticator
    OpenIDAuthenticator authenticator = new OpenIDAuthenticator();

    // Configure environment
    environment.scanPackagesForResourcesAndProviders(PublicHomeResource.class);

    // Health checks
    environment.addHealthCheck(new uk.co.froot.demo.openid.health.OpenIdDemoHealthCheck());

    // Providers
    environment.addProvider(new ViewMessageBodyWriter());
    environment.addProvider(new OpenIDRestrictedToProvider<User>(authenticator, "OpenID"));

    // Session handler
    environment.setSessionHandler(new SessionHandler());  }
}

それが役に立てば幸い。

于 2013-07-19T05:28:00.843 に答える
1

URLに「アプリケーション」を追加する必要があることがわかりました

http://localhost:8080/application/test
于 2014-09-20T17:01:31.150 に答える
0

追加して修正しました

environment.addResource(new UserResource()); 

私のrun()方法に。

于 2013-07-18T19:52:05.700 に答える