title: Oracle ADF login image does not display in browser
body: <p>I created a simple 100x70 login button for my Oracle ADF app using Illustrator and saved it for web as a PNG-24 when a checked the properties it has a DPI of 72. It's not displaying properly in the browser and appears as an "X". I thought it was the browser so I tried IE, Firefox, Chrome and Safari but none of them worked, I also tried it on my Mac and Windows to confirm. I read a post that said on deployment, this issue would stop, but after deploying it still persists. Is there something I am missing with creating a button for an Oracle ADF app?</p>
  
  <p><strong>UPDATE</strong></p>
  
  <p>Based on the link Sam recommended I found a number of solutions that I implemented that didn't work. The most popular recommendation is adding a security constraint for the images in the <code>web.xml</code> file, but my project already had the following security constraint:</p>
  
  <pre><code> &lt;security-constraint&gt;
  &lt;web-resource-collection&gt;
    &lt;web-resource-name&gt;allPages&lt;/web-resource-name&gt;
    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
  &lt;/web-resource-collection&gt;
  &lt;auth-constraint&gt;
    &lt;role-name&gt;valid-users&lt;/role-name&gt;
  &lt;/auth-constraint&gt;
  </code></pre>
  
  <p></p>
  
  <p>I thought the above should also include my images, just to make sure I added another constraint, see below:</p>
  
  <pre><code> &lt;security-constraint&gt;
   &lt;web-resource-collection&gt;
      &lt;web-resource-name&gt;Exclude from Security&lt;/web-resource-name&gt;
        &lt;url-pattern&gt;/resources/images/*&lt;/url-pattern&gt;&lt;!-- No security for images --&gt;
        &lt;url-pattern&gt;/css/*&lt;/url-pattern&gt;&lt;!-- No security for css --&gt;
     &lt;/web-resource-collection&gt;
  &lt;/security-constraint&gt;
  </code></pre>
  
  <p>But the image is still not appearing. I am not sure what's going wrong.</p>
  
  <p><strong>UPDATE 2</strong></p>
  
  <p>Below is my <code>web.xml</code> file</p>
  
  <pre><code>&lt;?xml version = '1.0' encoding = 'windows-1252'?&gt;
  &lt;web-app xmlns="http://java.sun.com/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
       version="3.0"&gt;
    &lt;servlet&gt;
      &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
      &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
      &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
    &lt;/servlet&gt;
    &lt;servlet&gt;
      &lt;servlet-name&gt;resources&lt;/servlet-name&gt;
      &lt;servlet-class&gt;org.apache.myfaces.trinidad.webapp.ResourceServlet&lt;/servlet-class&gt;
    &lt;/servlet&gt;
    &lt;servlet&gt;
      &lt;servlet-name&gt;BIGRAPHSERVLET&lt;/servlet-name&gt;
      &lt;servlet-class&gt;oracle.adf.view.faces.bi.webapp.GraphServlet&lt;/servlet-class&gt;
    &lt;/servlet&gt;
    &lt;servlet&gt;
      &lt;servlet-name&gt;BIGAUGESERVLET&lt;/servlet-name&gt;
      &lt;servlet-class&gt;oracle.adf.view.faces.bi.webapp.GaugeServlet&lt;/servlet-class&gt;
    &lt;/servlet&gt;
    &lt;servlet&gt;
      &lt;servlet-name&gt;MapProxyServlet&lt;/servlet-name&gt;
      &lt;servlet-class&gt;oracle.adf.view.faces.bi.webapp.MapProxyServlet&lt;/servlet-class&gt;
    &lt;/servlet&gt;
    &lt;servlet&gt;
      &lt;servlet-name&gt;adflibResources&lt;/servlet-name&gt;
      &lt;servlet-class&gt;oracle.adf.library.webapp.ResourceServlet&lt;/servlet-class&gt;
    &lt;/servlet&gt;
    &lt;servlet&gt;
      &lt;servlet-name&gt;adfAuthentication&lt;/servlet-name&gt;
      &lt;servlet-class&gt;oracle.adf.share.security.authentication.AuthenticationServlet&lt;/servlet-class&gt;
      &lt;init-param&gt;
        &lt;param-name&gt;success_url&lt;/param-name&gt;
        &lt;param-value&gt;/faces/E-SuiteFund.jsf&lt;/param-value&gt;
      &lt;/init-param&gt;
      &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
    &lt;/servlet&gt;
    &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
      &lt;url-pattern&gt;/faces/*&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
    &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;resources&lt;/servlet-name&gt;
      &lt;url-pattern&gt;/adf/*&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
    &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;resources&lt;/servlet-name&gt;
      &lt;url-pattern&gt;/afr/*&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
    &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;BIGRAPHSERVLET&lt;/servlet-name&gt;
      &lt;url-pattern&gt;/servlet/GraphServlet/*&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
    &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;BIGAUGESERVLET&lt;/servlet-name&gt;
      &lt;url-pattern&gt;/servlet/GaugeServlet/*&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
    &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;MapProxyServlet&lt;/servlet-name&gt;
      &lt;url-pattern&gt;/mapproxy/*&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
    &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;resources&lt;/servlet-name&gt;
      &lt;url-pattern&gt;/bi/*&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
    &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;adflibResources&lt;/servlet-name&gt;
      &lt;url-pattern&gt;/adflib/*&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
    &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;adfAuthentication&lt;/servlet-name&gt;
      &lt;url-pattern&gt;/adfAuthentication&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
    &lt;filter&gt;
      &lt;filter-name&gt;JpsFilter&lt;/filter-name&gt;
      &lt;filter-class&gt;oracle.security.jps.ee.http.JpsFilter&lt;/filter-class&gt;
      &lt;init-param&gt;
        &lt;param-name&gt;enable.anonymous&lt;/param-name&gt;
        &lt;param-value&gt;true&lt;/param-value&gt;
      &lt;/init-param&gt;
      &lt;init-param&gt;
        &lt;param-name&gt;remove.anonymous.role&lt;/param-name&gt;
        &lt;param-value&gt;false&lt;/param-value&gt;
      &lt;/init-param&gt;
    &lt;/filter&gt;
    &lt;filter&gt;
      &lt;filter-name&gt;trinidad&lt;/filter-name&gt;
      &lt;filter-class&gt;org.apache.myfaces.trinidad.webapp.TrinidadFilter&lt;/filter-class&gt;
    &lt;/filter&gt;
    &lt;filter&gt;
      &lt;filter-name&gt;adfBindings&lt;/filter-name&gt;
      &lt;filter-class&gt;oracle.adf.model.servlet.ADFBindingFilter&lt;/filter-class&gt;
    &lt;/filter&gt;
    &lt;filter&gt;
      &lt;filter-name&gt;ADFLibraryFilter&lt;/filter-name&gt;
      &lt;filter-class&gt;oracle.adf.library.webapp.LibraryFilter&lt;/filter-class&gt;
    &lt;/filter&gt;
    &lt;filter-mapping&gt;
      &lt;filter-name&gt;JpsFilter&lt;/filter-name&gt;
      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
      &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;
      &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
      &lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt;
    &lt;/filter-mapping&gt;
    &lt;filter-mapping&gt;
      &lt;filter-name&gt;trinidad&lt;/filter-name&gt;
      &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
      &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;
      &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
      &lt;dispatcher&gt;ERROR&lt;/dispatcher&gt;
    &lt;/filter-mapping&gt;
    &lt;filter-mapping&gt;
      &lt;filter-name&gt;adfBindings&lt;/filter-name&gt;
      &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
      &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;
      &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
    &lt;/filter-mapping&gt;
    &lt;filter-mapping&gt;
      &lt;filter-name&gt;ADFLibraryFilter&lt;/filter-name&gt;
      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
      &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;
      &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
    &lt;/filter-mapping&gt;
    &lt;filter-mapping&gt;
      &lt;filter-name&gt;adfBindings&lt;/filter-name&gt;
      &lt;servlet-name&gt;adfAuthentication&lt;/servlet-name&gt;
      &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;
      &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
    &lt;/filter-mapping&gt;
    &lt;context-param&gt;
      &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
      &lt;param-value&gt;client&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;context-param&gt;
      &lt;param-name&gt;javax.faces.PARTIAL_STATE_SAVING&lt;/param-name&gt;
      &lt;param-value&gt;false&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;context-param&gt;
      &lt;description&gt;If this parameter is true, there will be an automatic check of the modification date of your JSPs, and saved state will be discarded when JSP's change. It will also automatically check if your skinning css files have changed without you having to restart the server. This makes development easier, but adds overhead. For this reason this parameter should be set to false when your application is deployed.&lt;/description&gt;
      &lt;param-name&gt;org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION&lt;/param-name&gt;
      &lt;param-value&gt;false&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;context-param&gt;
      &lt;description&gt;Whether the 'Generated by...' comment at the bottom of ADF Faces HTML pages should contain version number information.&lt;/description&gt;
      &lt;param-name&gt;oracle.adf.view.rich.versionString.HIDDEN&lt;/param-name&gt;
      &lt;param-value&gt;true&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;context-param&gt;
      &lt;description&gt;Security precaution to prevent clickjacking: bust frames if the ancestor window domain(protocol, host, and port) and the frame domain are different. Another options for this parameter are always and never.&lt;/description&gt;
      &lt;param-name&gt;org.apache.myfaces.trinidad.security.FRAME_BUSTING&lt;/param-name&gt;
      &lt;param-value&gt;differentOrigin&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;context-param&gt;
      &lt;param-name&gt;javax.faces.VALIDATE_EMPTY_FIELDS&lt;/param-name&gt;
      &lt;param-value&gt;true&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;context-param&gt;
      &lt;param-name&gt;oracle.adf.view.rich.geometry.DEFAULT_DIMENSIONS&lt;/param-name&gt;
      &lt;param-value&gt;auto&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;context-param&gt;
      &lt;param-name&gt;oracle.adf.view.rich.SYNCROWS&lt;/param-name&gt;
      &lt;param-value&gt;enable&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;context-param&gt;
      &lt;param-name&gt;javax.faces.FACELETS_SKIP_COMMENTS&lt;/param-name&gt;
      &lt;param-value&gt;true&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;context-param&gt;
      &lt;param-name&gt;javax.faces.FACELETS_DECORATORS&lt;/param-name&gt;
      &lt;param-value&gt;oracle.adfinternal.view.faces.facelets.rich.AdfTagDecorator&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;context-param&gt;
      &lt;param-name&gt;javax.faces.FACELETS_RESOURCE_RESOLVER&lt;/param-name&gt;
      &lt;param-value&gt;oracle.adfinternal.view.faces.facelets.rich.AdfFaceletsResourceResolver&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;context-param&gt;
      &lt;param-name&gt;javax.faces.FACELETS_VIEW_MAPPINGS&lt;/param-name&gt;
      &lt;param-value&gt;*.jsf;*.xhtml&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;mime-mapping&gt;
      &lt;extension&gt;swf&lt;/extension&gt;
      &lt;mime-type&gt;application/x-shockwave-flash&lt;/mime-type&gt;
    &lt;/mime-mapping&gt;
    &lt;mime-mapping&gt;
      &lt;extension&gt;amf&lt;/extension&gt;
      &lt;mime-type&gt;application/x-amf&lt;/mime-type&gt;
    &lt;/mime-mapping&gt;
    &lt;listener&gt;
      &lt;listener-class&gt;oracle.adf.mbean.share.connection.ADFConnectionLifeCycleCallBack&lt;/listener-class&gt;
    &lt;/listener&gt;
    &lt;listener&gt;
      &lt;listener-class&gt;oracle.adf.mbean.share.config.ADFConfigLifeCycleCallBack&lt;/listener-class&gt;
    &lt;/listener&gt;
    &lt;listener&gt;
      &lt;listener-class&gt;oracle.bc4j.mbean.BC4JConfigLifeCycleCallBack&lt;/listener-class&gt;
    &lt;/listener&gt;
  
    &lt;security-constraint&gt;
    &lt;web-resource-collection&gt;
      &lt;web-resource-name&gt;Allowed ADF Resources&lt;/web-resource-name&gt;
          &lt;url-pattern&gt;/resources/images/*&lt;/url-pattern&gt;&lt;!-- No security for images --&gt;
          &lt;url-pattern&gt;/css/*&lt;/url-pattern&gt;&lt;!-- No security for css --&gt;  &lt;/web-resource-collection&gt;
  &lt;/security-constraint&gt;
  
    &lt;security-constraint&gt;
      &lt;web-resource-collection&gt;
        &lt;web-resource-name&gt;allPages&lt;/web-resource-name&gt;
        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
      &lt;/web-resource-collection&gt;
      &lt;auth-constraint&gt;
        &lt;role-name&gt;valid-users&lt;/role-name&gt;
      &lt;/auth-constraint&gt;
    &lt;/security-constraint&gt;
  
    &lt;security-constraint&gt;
      &lt;web-resource-collection&gt;
        &lt;web-resource-name&gt;adfAuthentication&lt;/web-resource-name&gt;
        &lt;url-pattern&gt;/adfAuthentication&lt;/url-pattern&gt;
      &lt;/web-resource-collection&gt;
      &lt;auth-constraint&gt;
        &lt;role-name&gt;valid-users&lt;/role-name&gt;
      &lt;/auth-constraint&gt;
    &lt;/security-constraint&gt;
    &lt;login-config&gt;
       &lt;auth-method&gt;FORM&lt;/auth-method&gt;
      &lt;form-login-config&gt;
        &lt;form-login-page&gt;/faces/Login.jsf&lt;/form-login-page&gt;
        &lt;form-error-page&gt;/error.html&lt;/form-error-page&gt;
      &lt;/form-login-config&gt;
    &lt;/login-config&gt;
    &lt;security-role&gt;
      &lt;role-name&gt;valid-users&lt;/role-name&gt;
    &lt;/security-role&gt;
  &lt;/web-app&gt;
  </code></pre>