Understanding Faces Servlet Mapping

Hi guys, I would like understand how work the Faces Servlet mapping.
In a web.xml file I put
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.context.webapps.FacesContext</servlet-class>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern> /<my_app_context>/* </url-pattern>  <!-- Here is my curious... -->1) If I put "/my_context/*" everything below "my_cotnext" (include JSP) is throughout to faces servlet, isn't?!!? can I just acces "http://localhost/my_context/index.jsp?!??
2) If i put "/faces/*" and use the URL "http://host/faces/my_context/index.jsp" I need to create a folder call faces inside "$CATALINA_HOME/webapp" ?!?!?
If not, what occurs?!!??
3) If i put "*.faces" can I save my jsp file with the extension jsp, for example index.jsp at context my_context, and before access by URL "http://localhost/my_context/index.faces"?!? If I can, how the tomcat find the index.jsp
Well, if someone can exaplain this rules in Tomcat for me will be very great!!!!!
Thanks all
Giscard

Hi Gisard,
as far as I did understand the whole thing you have two possibilities
1. Path Mapping
2. Extension Mapping
I'm using Path Mapping, so I have the following entry in my web.xml:
<servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup> 1 </load-on-startup>
</servlet>
<servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
</servlet-mapping>That's quite easy to use, because in my navigation rules in the faces-config.xml I just use something like this:
<navigation-rule>
    <navigation-case>
      <from-outcome>installation</from-outcome>
      <to-view-id>/pages/installation/inst_index.jsf</to-view-id>
    </navigation-case>
</navigation-rule>And I have the page "inst_index.jsp" in my folder "web-app-context/pages/installation".
I can access it with the URL:
"http://localhost:8080/<web-app-context>/pages/installation/inst_index.jsf".
If you want to use path mapping you should have the following entry in your web.xml:
<servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup> 1 </load-on-startup>
</servlet>
<servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
</servlet-mapping>So for example if you want to access the page "inst_index.jsp" in the folder "web-app-context/pages/installation" you have to use the URL:
"http://localhost:8080/<web-app-context>/faces/pages/installation/inst_index.jsp".
But you don't need a new folder "faces" within your web-app.
I hope I could help you with that.
Steffi

Similar Messages

  • ADF Bindings Servlet/Filter  not invoking  Faces Servlet

    I'm getting ADF Faces and Facelets working properly with pages written in jspx format, but the Faces Servlet being mapped to jsf format.
    The problem I'm getting is while displaying ADF Tables with data retrieved from the database using Toplink and bindings provided by ADF Databindings.
    The following is the Web.xml mappings for Faces Servlet and ADF bindings filter:
    <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>resources</servlet-name>
    <url-pattern>/adf/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <filter>
    <filter-name>adfBindings</filter-name>
    <filter-class>oracle.adf.model.servlet.ADFBindingFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>adfBindings</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>adfBindings</filter-name>
    <url-pattern>*.jspx</url-pattern>
    </filter-mapping>
    I'm getting the ADF tables displayed using ADF Bindings, if the faces servlet is mapped for jspx format;but, at the cost of losing Facelets...Facelets is not working with Faces Servlet mapped to jspx format(though written in jspx format, the faces servlet mappping has to be made for jsf format.On the other hand, if I use faces servlet mapping for jsf pages I'm getting Facelets working but ADF Databindings are not working ,(I guess) and hence ADF Faces Tables are not being displayed(I'm getting Access Denied message).
    I even tried to change the ADF binding filter mappings
    ---- from ---- jsp &jspx---- to ----- jsp and jsf ----
    But I got the same Access denied message.
    I read a similar post on this forum by Mr.Ashish Kumar who said he is using java script and automatic form submission, to refresh the page and that gave him the table working.
    as quoted in the post:
    af:table displays Access Denied
    Why should the page be refreshed at all. I Guess , the Faces Servlet is not being invoked by the ADF Bindings Filter/Servlet, and for this , I suppose , Mr.Ashish is using java script to provide the action required.
    And one more thing which that Automatic Refreshing of page using JavaScript cannot do.
    Suppose,
    I need customised display, rather than just a Table or Form,like:
    public String getEmp() {
    BindingContainer bindings = getBindings();
    OperationBinding operationBinding =
    bindings.getOperationBinding("findAllEmp");
    Object result = operationBinding.execute();
    if (!operationBinding.getErrors().isEmpty()) {
    return null;
    List<Emp> res=(List<Emp>)result;
    for(int i=0;i<res.size();i++)
    Emp myrec=res.get(i);
    System.out.println("Employee ["+myrec.getEname()+"], Salary ["+myrec.getSal()+"]");
    return "";
    where I do some customisation in the backing bean.
    and I call that method binded to a button as below:
    <af:commandButton
    text="findAllEmp"
    disabled="#{!bindings.findAllEmp.enabled}"
    binding="#{backing_Success.commandButton1}"
    id="commandButton1"
    action="#{backing_Success.getEmp}"/>
    What I'm getting is a disabled button.
    Why doesn't ADF bindings servlet invoke the faces Servlet?
    Can't we make ADF Bindings Servlet invoke Faces Servlet by configuring in the web.xml?
    Can't we get ADF Bindings filter mapped to work with jsf pages?
    Won't ADF Bindings work with jsf pages, will they work only with jspx pages?
    ADF Team,
    Please Help me.
    Thanking you,
    Samba

    Hi! Frank,
    Thankyou for your Reply.
    Yes, Mr.Adam Winer has contributed that library, I guess.
    But I already have that adf-facelets.jar in my lib folder ; and with out that the Facelets won't work with ADF faces , in the first place.
    I'm getting Facelets working excellently with ADF Faces but I'm not getting ADF Bindings working with Faceletpages.
    The thing is even in another application which does not have facelets in it, if we use mapping for jsf pages, ADF Bindings are not working.
    I think the ADF bindings filter is configured some where to work with jspx pages only.Could you tell me where to change that entry to make ADF Bindings work with jsf extension?
    Thanking you,
    Samba.

  • The servlet faces is referenced in servlet-mapping /faces/*, but not define

    Hi all,
    I try to deploy an Oracle BPM project to Weblogic Server v10.3 i get some errors.
    Caused by: weblogic.management.DeploymentException: [HTTP:101170]The servlet faces is referenced in servlet-mapping /faces/*, but not defined in web.xml.
    my web.xml is like following. But as you see i dont use prefix mapping. This project have 1 EAR project and it is include 1 portal web project. And the following web.xml is portal web project's :
    <servlet>
    <servlet-name>faces</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>faces</servlet-name>
    <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>faces</servlet-name>
    <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
    Thanks

    Could you please try this: deploy the JSF library and then deploy your application? By default, you will find "jsf-1.2.war" under YOUR_WLS_HOME/common/deployable-libraries/.
    Regarding the JSF library, please refer to http://download-llnw.oracle.com/docs/cd/E12840_01/wls/docs103/webapp/configurejsfandjtsl.html

  • Setting servlet mapping?

    a newbie question:
    My servlet are running fine when requested by:
    http://myMachine.com:7777/j2ee/servlet/com.whatever.MyServlet
    However I want it to be reached by:
    http://myMachine.com:7777/servlet/com.whatever.MyServlet
    note the missing "/j2ee". What is the proper way to set this mapping of the servlet directory?
    I assume it might be done in the according web.xml?
    Is it clever to edit web.xml manually? Do I have to use dcmctl udateconfig
    afterwards?
    Any hints are appreciated!

    I see what you mean. WebContent is just a general name. I use maven for building, which uses webapp as a standard.
    As far as having pages in a faces directory, that should be the case. I'm using /faces/* for the servlet mapping in my web.xml. Any requested url with that pattern should map the request to the faces servlet. Whatever page replaces the * would then be located in the root of the webapp directory by the faces servlet.
    My app doesn't seem to be getting that far. The /faces request doesn't seem to be getting to the faces servlet, as there are no initialization lines being dumped to my log file, but when I use *.jsf, it does.

  • A problem with servlet  mapping , using a servlet to produce some chart in

    Hi
    Thank you for reading my post.
    My problem is about using a Chart library which works well in jsf application but it does not works in JSF portlets.
    I think i find the problem but i do not know the solution.
    to use this charting library we should add a servlet to web.xml
    something like :
    <servlet>
    <servlet-name>Jenia internal servlet</servlet-name>
    <servlet-class>org.jenia.faces.util.Servlet</servlet-class>
    <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>Jenia internal servlet</servlet-name>
    <url-pattern>/jenia4faces/*</url-pattern>
    </servlet-mapping>
    so , when we try to load a chart , it will make the chart image source
    something like
    http://localhost:28080/Adv/jenia4faces/chart/OAReport.jspBarChart3d_id0.png
    in the above sample , adv is the name of web application which is
    deployed in a servlet container.
    and filter applied to make the chart render-able.
    to use the chart library in jsf portlet , i add the servlet
    description as i did for web application , so i add
    <servlet>
    <servlet-name>Jenia internal servlet</servlet-name>
    <servlet-class>org.jenia.faces.util.Servlet</servlet-class>
    <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>Jenia internal servlet</servlet-name>
    <url-pattern>/jenia4faces/*</url-pattern>
    </servlet-mapping>
    to my portlet web.xml file.
    when we have portlet , the url to access that portlet (which indeed is a
    web application) changes
    for example
    url for a sample portlet with same web application name
    will be like
    http:// localhost:28080/pluto/portal/Adv/
    as you can see there are some prefix to web application name in the url
    , but when i use chart component to show
    same chart , it still look for the chart in url like :
    http://localhost:28080/Adv/jenia4faces/chart/OAReport.jspBarChart3d_id0.png
    As you may already sugest , the image will not render because browser is
    looking in wrong place.
    now i
    think if i find some way to map that servlet to correct url
    pattern it will works.
    my question is :
    1-what will be new servlet url pattern ?
    2-is my assumption correct ?
    Thank you very much for reading such a long post

    i wrote an app i.e servlet which would select the data from the database and retrive the data.but i want to send this data to normal java file(which is not a servlet) and i want to display results in the normal java file.
    can any body help this concept........
    send me mail:[email protected]

  • Order of servlet mapping in web.xml

    Hello,
    is the order of multiple <servlet-mapping> in web.xml important? Or it doesn't matter in which order they are declared?
    For example, if i have two controllers, one is
    <servlet-name>Faces Servlet</servlet-name>
      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
    </servlet>
    and the second:
      <servlet>
        <servlet-name>FrontController</servlet-name>
        <servlet-class>servlets.FrontController</servlet-class>
      </servlet>
    and the mapping are:
       <servlet-mapping>
        <servlet-name>FrontController</servlet-name>
        <url-pattern>/jsf/*</url-pattern>
      </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
      </servlet-mapping>where /jsf/ contains jsp pages containing jsf components.
    is the order important?
    And may second question is:
    if i call the jsp page test.jsf in /jsf/test.jsp , which controller is responseble? Faces servlet or Frontcontroller?

    Here is what the 2.4 specification says on the matter (section SRV.11.1):
    >
    The path used for mapping to a servlet is the request URL from the request
    object minus the context path and the path parameters. The URL path mapping rules below are used in order. The first successful match is used with no further matches attempted:
    1. The container will try to find an exact match of the path of the request to the
    path of the servlet. A successful match selects the servlet.
    2. The container will recursively try to match the longest path-prefix. This is done by stepping down the path tree a directory at a time, using the �/� character as a path separator. The longest match determines the servlet selected.
    3. If the last segment in the URL path contains an extension (e.g. .jsp), the servlet container will try to match a servlet that handles requests for the extension. An extension is defined as the part of the last segment after the last �.� character.
    4. If neither of the previous three rules result in a servlet match, the container will attempt to serve content appropriate for the resource requested. If a "default" servlet is defined for the application, it will be used.
    The container must use case-sensitive string comparisons for matching.
    It also notes that in prior versions of the specification these were only a suggestion so if you are on servlet 2.3 or prior, you need to consult the documentation for your container.
    So, to answer your questions, no, order in the descriptor is not important.
    Also, based on the rules above, using your mappings, any URL starting with /jsf will be handled by FrontController including /jsf/test.jsp and /jsf/test.jsf.

  • Can i run a servlet without a web.xml file for servlet mapping?

    Hello everyone.
    The code i want to run compiles and everythink looks ok.
    It produces the .class file.
    I run Tomcat 4.1 and i build my Web site with Dreamweaver.
    I have a form in a page and i want to send the data upon form completion to a database i already have build with MySql.
    The database is up and running and the server is set-up ok.
    I have changed the port in Tomcat to run on port 80.
    The directory i have my site is
    Tomcat41\webapps\ROOT\se
    and the directory where i keep the servlet class is
    Tomcat41\webapps\ROOT\se\WEB-INF\servlet
    I have a web.xml file to map the servlet and placed it in
    Tomcat41\webapps\ROOT\se\WEB-INF
    In the Form action i write action:"/servlets/Classes/GroupRegistration"
    and I RECEIVE AN 404 ERROR FROM APACHE.
    Somethink is wrong .
    The following is the code from the GroupRegistration.java file
    and follws the web.xml file.
    Please Help.
    import java.sql.*;
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class GroupRegistration extends HttpServlet
    Connection con;
    public void doPost (HttpServletRequest req, HttpServletResponse res)
                             throws ServletException, java.io.IOException
         handleForm(req, res);
    public void init() throws ServletException {
         try{
         /* Loading the driver for the database */
         Class.forName("com.mysql.jdbc.Driver");
         Connection Con = DriverManager.getConnection("jdbc:mysql://localhost/se?user=luser&password=");
         catch (ClassNotFoundException e) {
         throw new UnavailableException("Couldn't load JdbcOdbcDriver");
         catch (SQLException e) {
         throw new UnavailableException("Couldn't get db connection");
         private void handleForm(HttpServletRequest req, HttpServletResponse res)
         throws ServletException {
         //ServletOutputStream out = res.OutputStream();
         //res.setContentType("text/html");
         //Extract the form Data Here
         String group = req.getParameter("GroupNo");
         String Name1 = req.getParameter("Name1");
         String LoginID1 = req.getParameter("LoginID1");
         String Name2 = req.getParameter("Name2");
         String LoginID2 = req.getParameter("LoginID2");
         String Name3 = req.getParameter("Name3");
         String LoginID3 = req.getParameter("LoginID3");
         String Name4 = req.getParameter("Name4");
         String LoginID4 = req.getParameter("LoginID4");
         String URL = req.getParameter("URL");
         String Title2 = req.getParameter("Title2");
         String date = req.getParameter("date");
         String INSERT = "INSERT INTO registration (groupno, name1, loginid1, name2, loginid2, name3, loginid3, name4, loginid4, url, topic, date) VALUES (" + group + "," + Name1 + "," + LoginID2 + "," + Name2 + "," + LoginID2 + "," + Name3 + "," + LoginID3 + "," + Name4 + "," + LoginID4 + "," + URL + "," + Title2 + "," + date + ")";
         PreparedStatement pstmt = null;
         try{
         pstmt = con.prepareStatement(INSERT);
         pstmt.executeUpdate();
         catch (SQLException e) {
         throw new ServletException(e);
         finally {
         try {
         if (pstmt != null)pstmt.close();
         catch (SQLException ignored){
    The web.xml file
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app xmlns="http://java.sun.com.xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
    <servlet>
    <servlet-name>GroupRegistration</servlet-name>
    <servlet-class>GroupRegistration</servlet-class>
    </servlet>
    <servlet-maping>
    <servlet-name>GroupRegistration</servlet-name>
    <url-pattern>/myGroupRegistration</url-patern>
    </servlet-mapping>
    </web-app>
    I apreciate your time.
    Thanks for any help.

    and the directory where i keep the servlet class is
    Tomcat41\webapps\ROOT\se\WEB-INF\servletOthers have pointed out that "servlet" should be "classes", but there is another mistake that hasn't been spotted. If you want your servlet to appear in the root context, you should use:
    Tomcat41\webapps\ROOT\WEB-INF\classes
    If you want your servlet to appear under the /se context, then you should use:
    Tomcat41\webapps\se\WEB-INF\classes
    and also, in the latter case, your form action should be /se/myGroupRegistration.

  • Exception thrown by servlet Faces Servlet in WAS ND 6.1.0.13

    Hi,<br>
    I'm using WebSphere Application Server Network Deployment (WAS ND) v. 6.1.0.13.<br><br>
    I'm getting this error when I try to launch my application:<br><br>
    [1/24/08 11:41:44:100 WET] 0000003c ServletWrappe E SRVE0100E: Did not realize init() exception thrown by servlet Faces Servlet: java.lang.NullPointerException<br>
    at javax.faces.webapp.FacesServlet.init(FacesServlet.java:144)<br>
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:190)<br>
    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.init(ServletWrapper.java:317)<br>
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:346)<br>
    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:464)<br>
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3276)<br>
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)<br>
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811)<br>
    at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1455)<br>
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:113)<br>
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:454)<br>
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:383)<br>
    at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)<br>
    at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1818)<br>
    at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:556)<br>
    at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:606)<br>
    at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:979)<br>
    at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1064)<br>
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469)<br>
    <br><br><br>
    After doing a search I tried this following steps:<br>
    � Delete the entry in web.xml:<br>
    <listener><br>
    <listener-class><br>
    com.sun.faces.config.ConfigureListener<br>
    </listener-class><br>
    </listener><br><br>
    � Update my log4j version<br><br>
    � Delete the commons-logging.jar from WEB-INF directory<br>
    These are the jar files included in WEB-INF directory:<br>
    commons-beanutils.jar<br>
    commons-collections.jar<br>
    commons-digester.jar<br>
    commons-javaflow-20060411.jar<br>
    commons-logging.jar<br>
    FglConnectorClient.jar<br>
    itext-1.4.2.jar<br>
    jasperreports-1.2.3.jar<br>
    jcommon-1.0.0.jar<br>
    jfreechart-1.0.1.jar<br>
    jsf-api.jar<br>
    jsf-ibm.jar<br>
    jsf-impl.jar<br>
    jstl.jar<br>
    log4j-1.2.14.jar<br>
    standard.jar<br>
    struts.jar<br>
    <br><br>
    <br>
    None of the suggestions worked.<br><br>
    Then I tried to deploy my application in another WAS ND 6.1.0.13 and it worked!!! <br>
    What can I do so solve this problem in my WAS ND 6.1.0.13? What could be the problem?<br><br>
    Thanks,<br>
    Nuno

    Did you find a solution to this problem
    please help
    Thanks & Regards
    Nasir

  • Use of filter to JSF faces servlet

    Hi
    I have a JSF application which is secured by a custom security framework (similar to SITE MINDER). The security framework after authentication passes the authenticated user name within a in-memory session cookie.
    The entire user information like his group and access restrictions (field / UI compoonent level) resides in the application database
    I have used a filter to JSF Faces servlet to retrieve the user information from the database and storing in session.
    Is this use of filter a good approach?

    I would fetch such information only once and store it in a simple session scoped bean after a successful login, but I am weird for wanting to do things in a simple way.
    A filter can work to validate if the user is still "logged in" (IE. his/her session didn't expire), but since this is JSF you could also use a phase listener for such a purpose.

  • How to specify  a servlet mapping as the url pattern with in the security constraints

    Hi ,
    Weblogic 6.0 documentation says the following:-
    Define which resources in the Web Application the security constraint applies to using the <url-pattern> element that is nested inside the <web-resource-collection> element. The <url-pattern> can refer to either a directory, filename or a <servlet-mapping>.
    To apply the security constraint to the entire Web Application, use the following <url-pattern>:
    <url-pattern>/*</url-pattern>
    Could any one let me know how to specify servlet mapping as the url pattern.
    I tried various combination and it doesn't seem to work and any help in this regard will be greatly appreciated.
    Thanks
    kannan

    The answer is posted here:
    Unapproved User Flag in UME

  • Problems with servlet mapping in 10g AS

    Hi There,
    i have a web application consisting of 2 controller servlets and use url mapping to send requests to the appropriate servlet, but i have a strange issue with 10g where it seems to be alternating between serlvets when handling requests!!!!
    the web.xml is like as follows (with the app having the root context '/app'):
    <servlet>
    <servlet-name>control1</servlet-name>
    <servlet-class>com.package1.class.name</servlet-class>
    </servlet>
    <servlet>
    <servlet-name>control2</servlet-name>
    <servlet-class>com.package2.class.name</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>control2</servlet-name>
    <url-pattern>/special/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>control1</servlet-name>
    <url-pattern>/*</url-pattern>
    </servlet-mapping>
    therefore i'd expect a request like http://domain.name/app/special/content to be handled by the control2 servlet and http://domain.name/app/normal/content or http://domain.name/app/normal/special/content to be handled by the control1 servlet...
    but what seems to happen when requesting http://domain.name/app/special/content oc4j seems to alternate which servlet it passes it to...
    is there any reason why this might be happening (like some app server configuration), as i have other applications that are configured in the same way, and there's no problems with requests going to the wrong servlet.
    many thanks for your help,
    Andy

    In your integration process, define the import parameter under Configurable Parameters category.
    http://help.sap.com/saphelp_nwpi71/helpdata/en/44/1f1a5c932d0d19e10000000a114a6b/frameset.htm
    Regards,
    Prateek

  • Re: issue with servlet-mapping

    Hello,
    i got following url pattern on web xml and it works fine on resin, however,
    its gives me, java.lang.IllegalArgumentException: Invalid pattern,
    is there is a anyway to fix it without altering the file structure.
    <servlet-mapping>
            <servlet-name>FacesServlet</servlet-name>
            <url-pattern>/jsf/*.jsf</url-pattern>
        </servlet-mapping>

    Wildcards(*) can be used either at the beginning or end of the pattern.You cannot specify wildcards in the middle of the pattern.
    So, only either of these will work
    <servlet-mapping>
       <servlet-name>FacesServlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>Or
    <servlet-mapping>
       <servlet-name>FacesServlet</servlet-name>
       <url-pattern>/jsf/*</url-pattern>
    </servlet-mapping>

  • Bug in servlet mapping

              Hi, it appears that the servlet mapping specified in section 10 of the
              Servlet 2.2 spec is broken in Weblogic server 6.0 GA. Here is the servlet
              2.2. spec for mapping:
              10.1 Use of URL Paths
              Servlet containers must use URL paths to map requests to servlets. The
              container uses the
              RequestURI from the request, minus the Context Path, as the path to map to a
              servlet. The URL
              path mapping rules are as follows (where the first match wins and no further
              rules are attempted):
              1. The servlet container will try to match the exact path of the request to
              a servlet.
              2. The container will then try to recursively match the longest path prefix
              mapping. This process
              occurs by stepping down the path tree a directory at a time, using the '/'
              character as a path
              separator, and determining if there is a match with a servlet.
              3. If the last node of the url-path contains an extension (.jsp for
              example), the servlet container
              will try to match a servlet that handles requests for the extension. An
              extension is defined as the
              part of the path after the last '.' character.
              4. If neither of the previous two rules result in a servlet match, the
              container will attempt to serve
              content appropriate for the resource requested. If a "default" servlet is
              defined for the application,
              it will be used in this case.
              It appears that Weblogic does step #3 before step #2. This means that if
              you have a servlet called 'foo' mapped to '/foo/*' and Weblogic 6.0 receives
              a request for '/foo/bar.jsp', the container returns an error because it
              cannot find a JSP file called "bar.jsp" to compile, when according to the
              spec, servlet 'foo' should receive the request with the pathInfo value set
              to "/bar.jsp".
              The workaround is to assign all *.jsp files to the servlet 'foo' as well,
              but this breaks all other JSP files in the same web application.
              I consider this a bad bug, as it breaks a proxy server that I have been
              working on. Tomcat and other servlet containers seem to have gotten this
              right, why not Weblogic?
              Thanks
              Colin Evans
              Colin Evans
              Senior Engineer
              BITMO, Inc. (http://www.bitmo.com)
              (415)920.7225 / [email protected]
              

              Hi, it appears that the servlet mapping specified in section 10 of the
              Servlet 2.2 spec is broken in Weblogic server 6.0 GA. Here is the servlet
              2.2. spec for mapping:
              10.1 Use of URL Paths
              Servlet containers must use URL paths to map requests to servlets. The
              container uses the
              RequestURI from the request, minus the Context Path, as the path to map to a
              servlet. The URL
              path mapping rules are as follows (where the first match wins and no further
              rules are attempted):
              1. The servlet container will try to match the exact path of the request to
              a servlet.
              2. The container will then try to recursively match the longest path prefix
              mapping. This process
              occurs by stepping down the path tree a directory at a time, using the '/'
              character as a path
              separator, and determining if there is a match with a servlet.
              3. If the last node of the url-path contains an extension (.jsp for
              example), the servlet container
              will try to match a servlet that handles requests for the extension. An
              extension is defined as the
              part of the path after the last '.' character.
              4. If neither of the previous two rules result in a servlet match, the
              container will attempt to serve
              content appropriate for the resource requested. If a "default" servlet is
              defined for the application,
              it will be used in this case.
              It appears that Weblogic does step #3 before step #2. This means that if
              you have a servlet called 'foo' mapped to '/foo/*' and Weblogic 6.0 receives
              a request for '/foo/bar.jsp', the container returns an error because it
              cannot find a JSP file called "bar.jsp" to compile, when according to the
              spec, servlet 'foo' should receive the request with the pathInfo value set
              to "/bar.jsp".
              The workaround is to assign all *.jsp files to the servlet 'foo' as well,
              but this breaks all other JSP files in the same web application.
              I consider this a bad bug, as it breaks a proxy server that I have been
              working on. Tomcat and other servlet containers seem to have gotten this
              right, why not Weblogic?
              Thanks
              Colin Evans
              Colin Evans
              Senior Engineer
              BITMO, Inc. (http://www.bitmo.com)
              (415)920.7225 / [email protected]
              

  • Different behaviour on servlet w/o servlet-mapping and init parameters

    I was playing around and found, that the init-parameter of a servlet is always null if there is no servlet mapping. I did not define a servlet mapping because I used the servlet only for for (named) dispatching (client usage should not be allowed).
    web.xml:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
      <servlet>
        <servlet-name>InitParamServlet</servlet-name>
        <servlet-class>test.InitParamServlet</servlet-class>
        <init-param>
          <param-name>param1</param-name>
          <param-value>value1</param-value>
        </init-param>
      </servlet>
      <servlet-mapping>
        <servlet-name>InitParamServlet</servlet-name>
        <url-pattern>*.initparam</url-pattern>
      </servlet-mapping>
    </web-app>
    InitParamServlet.java:
    package test;
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class InitParamServlet extends HttpServlet{
      private static final long serialVersionUID = 1L;
      protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
        pw.write(getServletName());
        pw.write(": param1=" + getInitParameter("param1"));
    }The URL http://localhost:8080/xxx/servlet/test.InitParamServletreturns org.apache.catalina.INVOKER.test.InitParamServlet: param1=null
    (on Tomcat), and the call to the same servlet with URL http://localhost:8080/xxx/test.initparamreturns InitParamServlet: param1=value1 instead (the correct init parameter value)!
    The same happens with jetty. This looks strange for me; I would expect the same behaviour for the servlet (independent from servlet-mapping-tag in the web.xml).

    When you call the url
    http://localhost:8080/xxx/servlet/test.InitParamServlet
    you are actually calling the invoker servlet that is defined in the default conf/web.xml. If you look at this web.xml file you will see that the invoker is mapped with the pattern "/servlet/*" which maps to the above url. The request goes to this servlet which parses the url and then calls the InitParamServlet class.
    When you call the url
    http://localhost:8080/xxx/test.initparam
    you are matching the url pattern you defined in the WEB-INF/web.xml file ("*.initparam"). This time the request goes to servlet instance that you defines in the servlet naming tags as "InitParamServlet" and since you defined init params they are populated.
    Note that these urls will also match the "*.initparam" pattern
    http://localhost:8080/xxx/XXXXX.initparam
    http://localhost:8080/xxx/badpackage.initparam
    http://localhost:8080/xxx/A.initparam
    Most people would have simplely defined the second servlet mapping as "initparam" and accessed the servlet with the url
    http://localhost:8080/xxx/initparam

  • Invalid element 'servlet-mapping' in content of 'web-app'

    Hello, JDev gurus!
    When compling, JDev 9.0.2.822 produce following error
    "oracle.xml.parser.v2.XMLParseException: Invalid element 'servlet-mapping' in content of 'web-app', expected elements '[taglib, resource-ref, security-constraint, login-config, security-role, env-entry, ejb-ref]'."
    on line <%@ taglib uri="http://xmlns.oracle.com/bibeans" prefix="orabi" %>
    This line was added automatically from component palette.
    How can I resolve this error?

    Hi,
    Did you change something into your web.xml file?
    Look at your web.xml. You must preserve the order given by the error message:
    Servlet-mapping
    session-config
    mime-mapping
    ejb-ref
    Jamil

Maybe you are looking for

  • Installing a ssd into a mid 2010 15 inch MBP with a clean Mavericks install

    I have the above mentioned computer, and it is beginning to show signs of hard drive issues.  I have tried to repair it with disk utilities, but it won't and says I need to reformat.  The current hard drive is a seagate hybrid with a little ssd and a

  • Need to insert into a table 1 of the fields (CLOB)with more than 4000 chars

    Dear Gurus, As far I understood, I need to write a function which get as parameter the large text and using bind variables I can return a CLOB containing more than 4000 chars. I tried all I can do and feel I want to died. Please, can I get specified

  • Business Objects Resource Requirements

    I have a Business Objects Deployment questions. We are on SAP BI 7.0 & ECC6.0. We have a specific business need where users want to have a adhoc reporting tool where they can do OLAP reporting on data from BW, SAP ECC/R3 and their local Excel/databas

  • Database Adapter -- Getting Error While Running

    Team i was getting the following error while working on database adapter.. Faulted while invoking operation "GetSQDBAdapter" on provider "GetSQDBAdapter". - <messages> - <input> - <InvokeGetSeq_GetSQDBAdapter_InputVariable> - <part xmlns:xsi="http://

  • Airport Extreme file transfer speed slower than expected.

    I have an Airport Extreme with a 1 TB drive attached. I'm trying to copy a bunch of files to it with a Windows Vista computer with a D-Link wireless N dual-band adapter (connected to the 5GHZ channel, which I configured to act solely as wireless N 5