sexta-feira, 7 de Julho de 2017 às 23:27:57 UTC-3, Flavio Silveira escreveu:
>
>
>
> quinta-feira, 6 de Julho de 2017 às 19:29:41 UTC-3, Douglas Patriarche
> escreveu:
>>
>> Please see my responses inline below:
>>
>> On Wednesday, July 5, 2017 at 6:21:00 PM UTC-4, Flavio Silveira wrote:
>>>
>>>
>>>
>>> quarta-feira, 5 de Julho de 2017 às 18:57:22 UTC-3, Douglas Patriarche
>>> escreveu:
>>>>
>>>> Hi Flavio,
>>>>
>>>> Yes, that sounds like a sane structure for organizing assets. If you
>>>> are using Maven to manage your project, then your web-visible assets
>>>> should
>>>> be under the <project>/src/main/resources directory, e.g.:
>>>>
>>>> <project>/src/main/resources/assets/js
>>>> <project>/src/main/resources/assets/css
>>>> <project>/src/main/resources/assets/html
>>>>
>>>>
>>>> You can then configure your application to serve static assets using
>>>> a ConfiguredAssetsBundle like this:
>>>>
>>>> public class MyApplication extends Application<MyAppConfiguration> {
>>>> // ...
>>>> @Override
>>>> public void initialize(final Bootstrap<MyAppConfiguration>
>>>> bootstrap) {
>>>> bootstrap.addBundle(new ViewBundle<>());
>>>> bootstrap.addBundle(new ConfiguredAssetsBundle("/assets/",
>>>> "/assets/", "index.html", "assets"));
>>>> bootstrap.addBundle(new ConfiguredAssetsBundle(
>>>> "/META-INF/resources/webjars", "/webjars", "index.html", "webjars"));
>>>> }
>>>> // ...
>>>> }
>>>>
>>>> You can configure multiple ConfiguredAssetsBundles, as seen above. The
>>>> second instance allows you to add WebJars <http://www.webjars.org> for
>>>> almost any JS/CSS library you might need.
>>>>
>>>> For a Metrics UI, I suggest you have a look at Grafana
>>>> <https://grafana.com> (for the UI) and Graphite
>>>> <https://github.com/graphite-project/graphite-web> (for the back-end
>>>> metrics service). To install Graphite, following the instructions here
>>>> <https://community.rackspace.com/products/f/25/t/6800>. Then install
>>>> Grafana, following the instructions here
>>>> <http://docs.grafana.org/installation/debian/>.
>>>>
>>>> I hope this helps.
>>>>
>>>> Regards,
>>>> Doug
>>>>
>>>
>>> Hi Douglas, thanks for your explanations!
>>>
>>> So the first line would be to tell Dropwizard that my resourcePath is
>>> /assets/, my uriPath is also /assets/, my indexFile is index.html and my
>>> assetsName is assets as seen here:
>>> https://github.com/dropwizard-bundles/dropwizard-configurable-assets-bundle/blob/master/src/main/java/io/dropwizard/bundles/assets/ConfiguredAssetsBundle.java#L173
>>>
>>> Is my assumption correct?
>>>
>>
>> Yes, that's correct.
>>
>>
>>> About the second line, I would have to create directories
>>> /META-INF/resources/webjars inside /assets/ to have my webjars in
>>> /webjars/, again, am I following this through?
>>>
>>
>> Actually, it's all taken care of for you, you don't need to do anything
>> other than create the ConfiguredAssetsBundle. With WebJars, the JS library
>> is packaged inside a jar file such that the static assets like .js and .css
>> files are stored inside the jar under the path
>> "/META-INF/resources/webjars". For example if you include JQuery in your
>> project:
>>
>> <dependency>
>> <groupId>org.webjars</groupId>
>> <artifactId>jquery</artifactId>
>> <version>1.12.4</version>
>> </dependency>
>>
>> Then inside the jquery-1.12.4.jar the static assets are stored under the
>> path /META-INF/resources/webjars/jquery/1.12.4/... You can then load JQuery
>> in your web pages with:
>>
>> <script src="/webjars/jquery/1.12.4/jquery.min.js"></script>
>>
>> The exact file names and paths inside the WebJars vary, so you'll want to
>> explore inside the jar files to see what exactly is available. Eclipse
>> allows you to easily look inside "Maven Dependencies" files; other IDEs
>> probably do too.
>>
>>
>>> In regards to Metrics UI, I have an idea for a Metrics UI that would be
>>> easily integrated to Dropwizard and maybe in the future be part of the
>>> bundle package, without depending on 3rd party software and its
>>> dependencies.
>>> That's why I would like to know more about what is already there and
>>> where to see the possibility of extending and customizing it.
>>>
>>
>> I think most people use Metrics by sending the metrics to an backend
>> server running Graphite or Ganglia or a commercial monitoring stack.
>> Graphite + Grafana is really good IMO. You can also access the raw metrics
>> as JSON if you access your app's adminConnector port with CURL or in a
>> browser. If you haven't looked at the adminConnector there are some basic
>> utilities available there:
>>
>> $ curl -G http://localhost:8986
>> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>> "http://www.w3.org/TR/html4/loose.dtd">
>> <html>
>> <head>
>> <title>Metrics</title>
>> </head>
>> <body>
>> <h1>Operational Menu</h1>
>> <ul>
>> <li><a href="/metrics?pretty=true">Metrics</a></li>
>> <li><a href="/ping">Ping</a></li>
>> <li><a href="/threads">Threads</a></li>
>> <li><a href="/healthcheck?pretty=true">Healthcheck</a></li>
>> <li><a href="/pprof">CPU Profile</a></li>
>> <li><a href="/pprof?state=blocked">CPU Contention</a></li>
>> </ul>
>> </body>
>> </html>
>>
>> It's pretty basic, though. It would certainly be nice if there was an
>> option, on development servers for example, to access the metrics in a
>> Grafana-like UI that was served directly by the Dropwizard-based app itself.
>>
>> Regards,
>> Doug
>>
>> Regards,
>>
>>> Flavio Silveira
>>>
>>>
>>>
> Hi Douglas, thank you again for your quick reply!
>
> I've done some testing and from what I can see I cannot use "/" as
> uriPath, am I correct?
>
> I've tried as below:
>
> public void initialize(final Bootstrap<PhoenixConfiguration> bootstrap) {
> bootstrap.addBundle(new AssetsBundle("/assets", "/", "index.htm"));
> }
>
> and with that I get this error: Multiple servlets map to path /*:
> assets[mapped:JAVAX_API:null],io.dropwizard.jersey.setup.JerseyServletContainer-2c8662ac[mapped:EMBEDDED:null]
>
> From what I've searched it seems I need to move my application to another
> directory other than /, but I couldn't find the way of doing it in 1.1.2,
> on older versions it seems something
> like: environment.jersey().setUrlPattern("/api/*");
>
> My idea is to serve just index.htm (or index.html) like
> mydomain.com/index.htm and use /js/ for JavaScript files, /css/ for CSS
> etc. Can this be done? What did I miss?
>
> Regards,
> Flavio Silveira
>
Here is my last attempt but it is still giving me the error above:
config.yml:
-----------
logging:
level: INFO
loggers:
br.com.tecnopon.phoenix: DEBUG
server:
rootPath: /api/*
PhoenixApplication.java:
-----------
public class PhoenixApplication extends Application<PhoenixConfiguration> {
public static void main(final String[] args) throws Exception {
new PhoenixApplication().run(args);
}
@Override
public String getName() {
return "Phoenix";
}
@Override
public void initialize(final Bootstrap<PhoenixConfiguration> bootstrap)
{
bootstrap.addBundle(new AssetsBundle("/assets", "/", "index.htm",
"static"));
}
@Override
public void run(final PhoenixConfiguration configuration,
final Environment environment) {
final HelloWorldResource resource = new HelloWorldResource(
configuration.getTemplate(),
configuration.getDefaultName()
);
final TemplateHealthCheck healthCheck =
new TemplateHealthCheck(configuration.getTemplate());
environment.healthChecks().register("template", healthCheck);
environment.jersey().register(resource);
}
}
--
You received this message because you are subscribed to the Google Groups
"dropwizard-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.