0

I have a static html file that I only want admin to have access to. So I do the following in my web.xml

<servlet>
    <servlet-name>editor</servlet-name>
    <jsp-file>/editor.html</jsp-file>
</servlet>

<servlet-mapping>
    <servlet-name>editor</servlet-name>
    <url-pattern>/editor.html</url-pattern>
</servlet-mapping>
<security-constraint>
    <web-resource-collection>
        <web-resource-name>editor</web-resource-name>
        <url-pattern>/editor.html</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

But I keep getting errors. The console reads

com.google.appengine.tools.admin.AppVersionUpload checkEndpointsServingStatusResult SEVERE: Endpoints configuration not updated. The app returned an error when the Google Cloud Endpoints server attempted to communicate with it.

Then I try to change every .html to .jsp, including the actual static file. When I do so the deployment works without error but when I try to access my page with mydomain/editor.jsp I can the NOT_FOUND.

ERROR LOG:

java.lang.IllegalStateException: No forced path servlet for /editor.html
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:679)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:206)
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:179)
    at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:136)
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:469)
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:439)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:446)
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:256)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:310)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:302)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:443)
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:235)
    at java.lang.Thread.run(Thread.java:745)
Katedral Pillon
  • 14,534
  • 25
  • 99
  • 199

1 Answers1

0

The jsp file should be the same as it is for real. (ie /editor.jsp). You should be able to access at https://myprojectID.appspot.com/editor

(NOTE - I removed the .html, but you could easily add that back in the two url-pattern's.)

<servlet>
    <servlet-name>editor</servlet-name>
    <jsp-file>/editor.jsp</jsp-file>
</servlet>

<servlet-mapping>
    <servlet-name>editor</servlet-name>
    <url-pattern>/editor</url-pattern>
</servlet-mapping>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>editor</web-resource-name>
        <url-pattern>/editor</url-pattern>
    </web-resource-collection>

    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>

    <user-data-constraint>  <!-- Always a good idea to add this -->
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>

</security-constraint>
  • I want to put security constraint to default `index.html` but it's not working ` index /index/* http://aaaaaaaaaa.appspot.com/ admin ` – Edijae Crusar Jan 12 '17 at 08:15
  • url-pattern doesn't need the domain. i.e. it should be `` see http://stackoverflow.com/questions/15385596/how-are-servlet-url-mappings-in-web-xml-used for more info. – Les Vogel - Google DevRel Jan 12 '17 at 21:46