EJB(EAR file) lookup from separate WAR file

Hi
I have 2 applications (EAR and WAR) deployed in an OC4J instance using Oracle 10g. All my EJB components are in my EAR file and all my front-end/servlet component are in the WAR file. My lookup in the servlet fails, like:
05/01/21 13:47:05 javax.naming.NameNotFoundException: SessionEJB not found
05/01/21 13:47:05 at com.evermind.server.rmi.RMIContext.lookup(RMIContext.java:149)
05/01/21 13:47:05 at com.evermind.server.ApplicationContext.lookup(ApplicationContext.java:248)
05/01/21 13:47:05 at com.evermind.server.ApplicationContext.lookup(ApplicationContext.java:119)
05/01/21 13:47:05 at javax.naming.InitialContext.lookup(InitialContext.java:347)
05/01/21 13:47:05 at efdw.eap.servlet.SessionEJBAction.execute(SessionEJBAction.java:48)
05/01/21 13:47:05 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
05/01/21 13:47:05 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
05/01/21 13:47:05 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
05/01/21 13:47:05 at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
05/01/21 13:47:05 at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
05/01/21 13:47:05 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
05/01/21 13:47:05 at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
05/01/21 13:47:05 at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
05/01/21 13:47:05 at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
05/01/21 13:47:05 at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
05/01/21 13:47:05 at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
05/01/21 13:47:05 at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
05/01/21 13:47:05 at java.lang.Thread.run(Thread.java:534)
EJB reference in web.xml looks like:
<ejb-ref>
<ejb-ref-name>SessionEJB</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.app.bean.SessionEJBHome</home>
<remote>com.app.bean.SessionEJB</remote>
</ejb-ref>
I've added the "parent" attribute in server.xml, something like:
<application name="myapp" path="../applications/myapp.ear" auto-start="true" />
<application name="myweb" path="../applications/myweb.ear" auto-start="true" parent="myapp" />
but the sever.xml file gets reset and there is no parent attribute in the file
lookup in my servlet:
Context ctx = new InitialContext();
Object objref = ctx.lookup("SessionEJB");
sessionEJBHome = (SessionEJBHome)PortableRemoteObject.narrow(objref, SessionEJBHome.class);
beanRemote = sessionEJBHome.create();
I also tried using the jndi.properties file and by specifying context attributes (PROVIDER_URL,INITIAL_CONTEXT_FACTORY,..) nothing worked.
Is there a way I can configure the jndi tree like in weblogic? How do I need to configure the lookup?

Hi Naga,
You have to lookup the ejb as follows:
Object objref = ctx.lookup("java:comp/env/ejb/SessionEJB");
location tag in orion-ejb-jar.xml for the EJB determines where the JNDI-name to which this bean will be bound documented in EJB Guide at http://download-west.oracle.com/docs/cd/B14099_01/web.1012/b15505/dtdxml001.htm#sthref1130
<ejb-ref-mapping ... > in orion-web.xml :
This element creates a mapping between an EJB reference, defined in an <ejb-ref> element, and a JNDI location when deploying.
The <ejb-ref> element can appear within the <web-app> element of orion-web.xml or web.xml and is used to declare a reference to an EJB.
-Debu

Similar Messages

  • Where do I put config files for a webapp (war file)?

    To my understanding a war file is supposed to be dropped in. It's isn't intended to be unzipped by the person installing the webapp. Inside my web app I have some xml files I access to get configuration information for how the servlet works. This xml file is intended to be edited by the sysadmin using the webapp. So, it's obvious I can't put my xml file inside my war file otherwise they'd have to unzip it to edit it. So my question is, where do I put it? What is the normal place to put stuff like this for a webapp?
    Example:
    I make a servlet (or jsp/custom tags) that generates an explorer-like directory tree. It reads the tree folders and files from an xml file. So one sysadmin might make a tree that looks like this:
    Fruit
    |-apples
    | |-Gala
    |-oranges
    |-pears
    another sysadmin might make a tree that looks like this:
    Bookstore
    |-Technical Books
    | |- JSP to go
    |-Children's Books
    |-Dr Seuss
    And these are defined in the xml file.
    It's driving me crazy because I want to make my webapp deployable in a war file. Since I have to unzip it right now, the war file is useless.
    Thanks,
    David

    I don't have the answer, but I understand your pain. I was trying to figure this out last year before my company went out of business and made this problem go away.
    The issue is that you want to have a user install your webapp by deploying the war file and configure the app without unzipping the war file. If you can start the webapp first, why not just put the default or empty configuration file somewhere in your webapp director structure and write an administration servlet or JSP to configure it.
    If you must configure the application before it can start up, the following might apply.
    The obvious approach would be to install a properties or xml file separately from the war file and let the user edit that file. The problem is that your servlets and jsps need to be able to find it at run time. This is problematic because the current directory for relative paths seems to vary from one server to another. If I remember correctly, on Windows NT running Tomcat, current directory points to C:\jakarta-tomcat-x.x.x\bin. When running Websphere, it points to C:\WINNT. You can figure this out for the server your user is going to be running and have them put the file in one of those places. But I don't like putting my application files in places like that.
    I can't remember at the moment how it works in other servers, but at least in Tomcat you might put the configuration file in the webapps directory with your war file. Then you could have your servlet do a getServletContext().getRealPath() or something like that and back up the path one level to get to the file.
    At one point I thought it would be nice to put the path to the configuration file in the system environment, but we couldn't find any way in Java to get access to it.
    Will.

  • Problems while creating a project from a war file...

    Hi there, I created a new project in jDev 10.1.3 from a war file that contains a web site that originally ran on TomCat. The problem is that my web.xml file does not contain any information about the servlets that I have in the war file. So when I try running a servlet, I always get an error.
    Is there a way to bypass the need to declare every single servlet I have in the web.xml file? If not, are there tools that exist that I could use to do this automatically?
    Thanks

    Hi,
       You can try the following:
    1. Give the fully qualified domain name of the DTR server host in NWDS Preferences->Development Configuration.
    2. Check if your WAS and JDI are on a higher SP level. If yes then use the corresponding NWDS.
    Regards,
    Satyajit.

  • Referencing utility classes from a war file

    How do you reference a utility class from a war file? I tried adding the class to the deployment plan descriptor, however I still get a ClassNotFoundException.
    Thanks,
    Will

    To use the utility classes from a war you have to place them under the web-inf/classes directory.
    webApplication(WAR directory)--->WEB-INF--> classes (put your utility classes in this directory)

  • Is there a quick method for turning a 13 page Ai file into 13 separate Ai files

    Is there a quick method for turning a 13 page Ai file into 13 separate Ai files? I need to resave or RIP them as normalized PDF files, and I need to start with single-page ai files.
    Thanks.

    As Erica says, it's in the Illustrator Options window which opens after checking Save.. Check the top of what I showed

  • Pre-load servlets from a war-file

    Hello,
              is there a way to pre-load a servlet (or execute any other code)
              at server startup, when the application is deployed as a .war-file?
              I know how to use the weblogic.servlet.utils.ServletStartup and
              the weblogic.system.startupClass... property, but these two
              seem to require that the servlet (or application class, respectively)
              are found in the servlet classpath (or the weblogic.class.path,
              respectively), so these mechanisms cannot peek into war-files to find
              the class, am I right?
              The page http://www.weblogic.com/docs51/classdocs/webappguide.html#dtprops
              says:
              <load-on-startup>load_order</load-on-startup>
              (Optional) This property is not honored by WebLogic Server in this release.
              Is this still valid?
              Is there a workaround?
              When will this element be supported?
              Concerning a possible workaround, I have read:
              > Subject: Re: Pre-load
              > Date: Fri, 19 Nov 1999 14:38:41 -0500
              > From: Jeff Martin <[email protected]>
              > Newsgroups: weblogic.developer.interest.servlet
              > Tom Gerber wrote:
              > >
              > > How do you get your startup class to start? Do you have a
              > > script which calls your startup class via a URL? Or is
              > > there a setting in the weblogic properties file for it?
              > Starting WebLogic in unix is a shell script. Just add a line to run your
              > preload program (e.g. java Preload).
              > Some unixes have utilities to get a web page from the command line (to
              > do shell parsing on it); create a series of calls, one per page.
              That sounds like a possibility, but I do not understand exactly.
              1) Where do I have to put the line into the shell script?
              2) Which line is it?
              3) What is the UNIX utility?
              I am using WL 5.1 (evaluation) under Solaris.
              Any help appreciated,
                   Oliver Matz
              | _ \ / \ | __)( ) Oliver Matz, Engineer
              | _/( () )| __) | | fon: +49(0)40/60990-0
              |_| \__/ |___) |_| fax: +49(0)40/60990-113
              

    Yes you can load a java applet form a jar file.
    Here is the code for internet explorer.
    <body>
         <table align="center" border="1">
              <tr>
                   <td>
                        <object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="10" height="10" codebase="/plugin/">
                        <param name="code" value="XXX.class">
                        <param name="archive" value="XXX.jar">
                        </object>
                   </td>
              </tr>
         </table>
    </body>
    </html>
    Just replace the XXX.class with the class containing the init() method and XXX.jar with the jar file.

  • WLS 7.0 - util jars being accessed from the war file

    Some of classes in the warfile (servlets) need access to some of the util jars in my ear file. I really don't want to put them in the war file/WEB-INF/lib directory and in the ear file. Is there any way to do this without putting them in the classpath.
    Any info would be appreciated.
    Thanks,
    Ian

    Ian,
    Examine the following link on packaging utility classes and the Weblogic classloader
    architecture
    This link should provide (hopefully :-) ) the answer to your question
    http://e-docs.bea.com/wls/docs70/programming/classloading.html
    Chuck Nelson
    DRE
    BEA Technical Support

  • Main window ptr. from separate NIB file

    Hi All,
    This sounds like the simple kind of job a programmer would do everyday, but I haven't been able to figure it out yet.
    My NSObject app has the usual main window and MainMenu.nib file, and my user-defaults are kept in an NSWindowController subclass complete with its own separate Preferences.nib file. It does the job but I'd prefer to attach the prefs window to the main window as a sheet rather than present it as a separate pane.
    Assuming this is possible, I'd at least need a pointer to the main window to start with. How can I get the main window's pointer from within this separate nib file, please?
    Thanks in advance
    Ernie

    Thanks guys. I've figured this out now!
    Ernie

  • AS file not recognizing id's from separate MXML file

    I'm new to Flex (and fairly new to programming in general)
    and have a question that Google hasn't helped with.
    The relevant code is below, and here's the long and short of
    it. There's a TextInput whose visibility I want to toggle via a
    function in a separate AS file. On the line
    "photoNameEditor.visible = false;" though, Flex Builder gives me an
    "1120: Access of undefined property photoNameEditor" error, and the
    same goes for photoName.
    I'm fairly sure the problem is that the AS file doesn't
    recognize the id from the separate MXML file. The error goes away
    when I put the ActionScript between <mx:Script> tags in the
    MXML file, but I'd much rather keep the AS in its own file. So my
    question is what's the best way to get the AS file to recognize
    id's from a separate MXML file?
    Thanks very much. I'd appreciate anything you think might
    help.

    There are a couple things going on here. Let's assume you
    want to stick with this approach where you're including external
    scripts instead of importing a class or using event dispatches
    (that will all come later - months if your experience is anything
    like mine). Given that, I'm not sure that text is the best control
    for what you want to do, but I'm not sure what you want to do
    exactly. However, if you need text in your situation, might try a
    label, linkbutton, button - things that play well assumed links and
    clicks. However, given your code and if you want to use text
    instead of a label, you can move the handler to the mouseDown
    event, rather than click, and it would probably work. (sorry for
    the formatting - lazy right now):
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="
    http://www.adobe.com/2006/mxml"
    layout="absolute">
    <mx:Script source="scripts/toggleStyles.as" />
    <mx:VBox x="55" y="45" height="100%">
    <mx:Label id="photoName" fontSize="12" fontStyle="normal"
    text="Click Me" enabled="true" fontWeight="bold"
    click="togglePhotoNameEdit()"/>
    <mx:TextInput id="photoNameEditor" fontSize="16"
    width="300" />
    </mx:VBox>
    </mx:Application>
    <!--and the ActionScript file:-->
    // ActionScript file
    private function togglePhotoNameEdit():void {
    photoNameEditor.visible = !photoNameEditor.visible;
    }

  • Accessing resources from a WAR file.

    Do you guys know how a JSP is supposed to reference resources inside the WAR file? I have some gif files in an images folder at the top root of the WAR directory. I'm tying to access them like n the JSP with -
    SRC="./images/update_button.gif"
    And it is not working. Any suggestions?
    Thanks in advance,
    dosteov

    Usually "./" at the beginning of a path is unnecessary, since "." means "current directory". Did you mean "../images/update_button.gif" instead?

  • How To Access a jar file present outside the war file through a jnlp

    Aoa
    I m new to this forum
    I m having problem with my jnlp file
    i want to know is there any way to access a jar file through jnlp.The problem is that my jnlp file is present in the war file
    and i want to know how to acess a jar file through this jnlp.The scenerio is as below
    I m using ear file on jboss.Its hirerchy is as
    -PAN-war.war
    -launch.jnlp
    -PAN-app-client.jar
    my jnlp file is as follows:
    <?xml version="1.0" encoding="UTF-8"?>
    <jnlp spec="1.0+" codebase="http://localhost:8080/" href="PAN/launch.jnlp">
    <information>
    <title>PanEmirates</title>
    <vendor>M Fazal Ur Rehman</vendor>
    <description>PanEmirates</description>
    <description kind="short">PanEmirates</description>
    <homepage href=""/>
    </information>
    <security>
    <all-permissions/>
    </security>
    <resources>
    <j2se version="1.5+"/>
    <jar href="PAN-app-client.jar" download="eager"/>
    <jar href="lib/javafxrt.jar" main="true" download="eager" />
    <jar href="lib/Filters.jar" download="eager"/>
    <jar href="lib/javafx-netbeans-fxuserlib.jar" download="eager"/>
    <jar href="lib/swing-layout-1.0.3.jar" download="eager"/>
    </resources>
    <application-desc main-class="net.java.javafx.FXShell">
    <argument>pan.Main</argument>
    </application-desc>
    </jnlp>
    when i run launch.jnlp file it says unable to download resource http://localhost:8080/PAN/PAN-app-client.jar
    how to access this jar file
    Any help or comment would be highly appreciated
    Regards
    M Fazal Ur Rehman

    Excellent question. I don't see any client-jar in your EAR file structure. So I am assuming you are writing a separate client application which will talk to the ejbs deployed as part of this EAR. You need to do the following:
    Write another EAR file with the following structure:
    ear:
    META-INF/application.xml
    util.jar
    client.jar
    client.jar should have a META-INF/MANIFEST.MF and that should contain Class-Path:util.jar and value for Main-Class attribute.
    Now deploy this new ear to your application server and execute it using Application Client Container that comes with your app server.
    If you don't want to write another EAR file, then bundle th client.jar in your original EAR file.
    Points to note are:
    you have to repackage util.jar again inside this ear file.
    For portability reason, you should use Class-Path manifest entry in client.jar. Refer to http://java.sun.com/j2ee/verified/packaging.html and J2EE platform spec section #8.2.
    Hope this helps,
    Sahoo

  • Images and js files within a deployed war file are generating 404 errors.

    Greetings,
    I have an odd situation in that image files and js files that are part of a deployed war file are generating 404 (not found) errors when accessed via https but ARE found when accessed via http.
    Unfortunately we are required to use https.
    I have verified via jar -tf that the files are indeed part of the war file. So, it is not that they are missing as is evident when accessed via http. (they appear as expected)
    A work around is to create the sub directories under the document root, on the ohs, and populate the sub directories with the images and js files that were used as part of the war file build. While this works, it doesn't explain why they would generate a 404 error when referenced from within the war via https.
    The war file works correctly on our 10g installation.
    I also have a very simple deployed war file and it too seems to have an issue finding direcotries/files that are part of the war file when referenced via https but not http.
    We are using Oracle 11g OHS and using the WLS Admin Console to do the deploying. We also are using the OSSO for the performing the required authentication.
    I have an SR in with oracle and have been working with them but I thought I would post here too.
    Suggestions?
    Thanks in advance.
    Edited by: emmett on Jan 5, 2011 2:47 PM

    Don't crosspost. Continue here: http://forum.java.sun.com/thread.jspa?threadID=5251627

  • Absolute file path in a war file

    Hi,
    I have a war file which I have deployed on a Weblogic 7 server.I have a startup servlet which tries to read an xml file located in the WEB-INF folder.I need to have the absolute path to the file so that my parser can read the xml file.
    ServletContext.getRealPath() returns null when the application is in a war format.
    Would be grateful for any help.
    regards
    Vikram

    I've been using the getRealPath() method from the
    ServletContext object to ..
    I'm suspicious of the fact that
    you are getting a null pointer when you use
    getRealPath().
    I have also been deploying my webapps to Tomcat using
    war files. So without knowing more I'm guessing you
    may have some sort of problem with your overall
    configuration here...Nothing to do with configuration. getRealPath() returns null if the .war file doesn't get unpacked. The Tomcat servlet engine unpacks the war files but weblogic apparently does not.
    So getRealPath() is not generic enough, as it depends on the servlet container used.
    Also, I would not recommend the suggestion to use the ProtectionDomain.getCodeSource() method (although it may work). ProtectionDomain is not intended for reading xml files, (wether inside the web-inf dir or not) but has to do with security. It is simply overkill in this case.
    The poster should be able to get the file with the class.getResource() method, get a java.net.URL obj out of it, then call URL.getPath() or getFile() (check the URL class for these methods ), get back a path string and call his parser.
    The other way would be to simply list that file in the web.xml as an init param :
    <context-param>
    <param-name>filename</param-name>
    <param-value>WEB-INF/file.xml</param-value>
    </context-param>and get it with
    getInitParameter("filename")

  • Files disappearing from mounted .DMG files

    Hi, I've had this issue occur a few times in Tiger and I'd like to know if anyone else has experienced this and if there's a known workaround. Sometimes, when browsing a disk image, or, less commonly, a physical disc like a CD, files in the Finder will seem to disappear from the image/disk when clicked on. First the filenames will go, then the files themselves, and evidently those files then become unreadable in general as applications can't access them. I don't get any error messages; it's just like the filesystem on that disk eats itself away and vanishes. I can unmount the disk without any issue.
    I'm having this problem right now with any disk image I mount on my XServe -- it goes through the "Verify" step just fine, shows up on my desktop, I can browse and even open files, but inevitably within a very short period of time the above occurs, and it becomes useless. I KNOW it can't be the .dmg file that's the problem, because if I share the .dmg over Personal File Sharing and mount it from another Mac, this problem does NOT occur. It's just on the one Mac hosting the files. Any idea what this could mean, and what could solve it?
    Also, I know a lot of times a restart will cure this weird little glitches, but I would really like a solution, if you know what I mean... particularly on a server, I cannot afford to restart whenever I have a problem.

    Sounds like you have run into a very strange, and unfortunately no uncommon, bug involving file systems from either servers or FAT 32 mounted external drives. See this discussion:
    http://discussions.apple.com/thread.jspa?messageID=5310151
    Read on down away to see some replies from people who did some pretty thorough investigations of the problem.
    Francine
    Francine
    Schwieder

  • JSP precompilation and my .java files compilation issues /  building WAR file using ANT

    Hello.
    I am new to working with WAR files and the whole process of it. A little
    background on what we are using. We are using, WLS 6.1 SP3. I am using the
    ant.bat that is supplied in the bin directory of the WLS install.
    I am trying to work with ANT and getting it to build the file. I am making
    progress, but at a point where I am having trouble getting my java code
    files to compile using ant. I am having one issue and looking to do one
    other item.
    1) I would like to precompile the JSPs if possible prior to putting into the
    WAR file. Not sure if this is done or not, but there was a utility when I
    was working with ibm's app server that gave us the ability to do a batch
    complile. Was thinking that maybe a similair concept is possibly here.
    2) Having issue getting ant to compile code properly. In the compile
    section of the build.xml file for ant, I tell it where the source files are,
    and the destionation folder for the compiled class files. I then try to set
    the classpath so that it finds the .jar files that are necessary for my
    source files to complile. But, it won't find them. And not sure how come.
    I may be going about this all wrong, but dont know. Here is the compile
    section of the build.xml I am using:
    <target name="compile" depends="prepare">
    <javac srcdir="classes" destdir="${deploy.home}/WEB-INF/classes"
    classpath="$(lib.home)"
    debug="on" optimize="on" deprecation="off"/>
    </target>
    One note, I've tried many different items in the classpath line, which
    don't work. if I do *.jar it fails at complie time, invalid argument. As
    well as if I use *.* and so on. if I list the explicit file names, it still
    doesn't seem to find them.
    I was wondering if anyone could help, if you need anymore information let me
    know, I can send the entire build.xml if necessary. I may be missing
    items, seeing that this is my first try at using ANT.
    Any help is appreciated and thanks in advance. Hopefully not sounding too
    off the wall. Hopefully get some clarification and understanding.
    Thank you.
    Kevin.

    Kevin Price wrote:
    Hello.
    I am new to working with WAR files and the whole process of it. A little
    background on what we are using. We are using, WLS 6.1 SP3. I am using the
    ant.bat that is supplied in the bin directory of the WLS install.
    I am trying to work with ANT and getting it to build the file. I am making
    progress, but at a point where I am having trouble getting my java code
    files to compile using ant. I am having one issue and looking to do one
    other item.
    1) I would like to precompile the JSPs if possible prior to putting into the
    WAR file. Not sure if this is done or not, but there was a utility when I
    was working with ibm's app server that gave us the ability to do a batch
    complile. Was thinking that maybe a similair concept is possibly here.you can use weblogic.jspc
    http://e-docs.bea.com/wls/docs70/jsp/reference.html#57794
    or just set the precompile flag in weblogic.xml
    You can configure WebLogic Server to precompile your JSPs when a Web
    Application is deployed or re-deployed or when WebLogic Server starts up
    by setting the precompile parameter to true in the <jsp-descriptor>
    element of the weblogic.xml deployment descriptor.
    >
    2) Having issue getting ant to compile code properly. In the compile
    section of the build.xml file for ant, I tell it where the source files are,
    and the destionation folder for the compiled class files. I then try to set
    the classpath so that it finds the .jar files that are necessary for my
    source files to complile. But, it won't find them. And not sure how come.
    I may be going about this all wrong, but dont know. Here is the compile
    section of the build.xml I am using:
    <target name="compile" depends="prepare">
    <javac srcdir="classes" destdir="${deploy.home}/WEB-INF/classes"
    classpath="$(lib.home)"
    debug="on" optimize="on" deprecation="off"/>
    </target>
    maybe because you are not using curly braces there on lib.home??
    if you do it the way above, you would have to list all your jars
    classpath="$(lib.home)\lib1.jar:$(lib.home)\lib2.jar"
    or you can nest
    <javac srcdir="classes" destdir="${deploy.home}/WEB-INF/classes"
    debug="on" optimize="on" deprecation="off">
         <classpath>
              <fileset dir="${lib.home}" includes="*.jar" />
         </classpath>
    </javac>
    One note, I've tried many different items in the classpath line, which
    don't work. if I do *.jar it fails at complie time, invalid argument. As
    well as if I use *.* and so on. if I list the explicit file names, it still
    doesn't seem to find them.
    I was wondering if anyone could help, if you need anymore information let me
    know, I can send the entire build.xml if necessary. I may be missing
    items, seeing that this is my first try at using ANT.
    Any help is appreciated and thanks in advance. Hopefully not sounding too
    off the wall. Hopefully get some clarification and understanding.
    Thank you.
    Kevin.

Maybe you are looking for