JSP/SERVLETS NOT UNDERSTANDING JAAS SECURITY CONTEXT

Hi ,
Instead of using the default form action "j_security_check" for form based authentication
.I have a custom JAAS loginmodule which is a servlet that gets calls when the
user clicks on "OK" in the login form..
Scenario1:
I have a servlet(unprotected) which calls a EJB(which is protected).
Depending on who has privileges to execute methods on the EJB bean , the authentication
happens correctly..
Scenario2:
I have a PROTECTED servlet.
When I execute the servlet in the browser , the login-form comes up .Once I click
on OK,what is happening is I call my
custom-loginmodule servlet which then calls the protected servlet.
Now ..from the custom-loginmodule servlet when the request goes to the PROTECTED
servlet ,the login-page again comes up...for some reason the servlets or JSPs'
don't understand that the security context has already been created..
But if the currently protected servlet is made unprotected and if it is made to
call a protected EJB, the EJB bean gets the security context.
I am thinking that security context is propagating but for some reason the JSP/servlet
domain does not seem to get the already created security context.
Another thing I noticed was with the default approach of using form-auth as "j_security_check"
does not seem to work with URL rewriting.
Any hints is greatly appreciated..
Thanx,
krish.
Krishnan.Venkataraman
Symphoni Interactive
Technical Lead.
[email protected]
412 414 5385(mobile)
412 446 2219(Work)
1 800 439 7757 (# 2219) (Work)
412 343 6549(Res)
WEB:http://members.123india.com/krishnan

hi,
you may set a <servlet-mapping> in web.xml or you may use
<form action="/servlet/HelloWorldExample" method=post>
instead of
<form action="/HelloWorldExample" method=post>
the <servlet-mapping> should be:
<web>
<servlet>
<servlet-name>HelloWorldExample</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldExample</servlet-name>
<url-pattern>/helloWorld.html<url-pattern>
<servlet-mapping>
</web>
after you add the servlet-mapping, you can access the servlet with the url-pattearn, that is:
<form action="/helloWorld.html" method=post>
the internal operation of the first and second methods are different, and you should use second one(user servlet-mapping), and the <url-pattern> has may way to use, if you want learn more, see servlet spec. for more.

Similar Messages

  • JSP/Servlets not working after upload

    I have a JSP file and some servlets that work fine on my PC running Tomcat.
    I just uploaded them to my web server (which supports servlets/jsp and has apache web server running), but they do not work. The jsp file does not run, it just displays the source code.
    Strangely, the support people at my server say the jsp files run ok when they view them. But when I view them from my browser it just shows source code.
    Do I need to configure something in my program? Or is it a server problem?

    Very hard to help without seeing the page - the answer is in the code  :-)
    Can you please point a link to your page?
    Are you sure you uploaded all the image files, and that the paths to the images are all correct?
    Nadia
    Adobe® Community Expert : Dreamweaver
    http://www.perrelink.com.au
    Unique CSS Templates |Tutorials |SEO Articles
    http://www.DreamweaverResources.com
    http://csstemplates.com.au/
    http://twitter.com/nadiap

  • JSP : Tiles Error �tag.getAsString� : component context is not defined

    JSP : Tiles Error �tag.getAsString� : component context is not defined
    I�m working with Struts 1.1 and Tiles, under Tomcat 5.0.16
    My application works fine using Struts 1.1 alone, however, when attempting to run the application in a �Tiles� environment, I get an error:

    javax.servlet.jsp.JspException: Error - tag.getAsString : component context is not defined. Check tag syntax

    I have �defined� this in my �tiles-defs.xml� file, and as far as I can tell, everything else is configured properly (I have looked over the included Struts document examples, and others on the web, and I seem to have everything configured identically).
    What am I missing???
    I have created a series of �mostly� empty JSP files, for simplicity sake.
    JSP FILES:
    -     header.jsp
    -     footer.jsp
    -     menu.jsp
    -     rootLayout.jsp
    -     user.jsp
    -     show_user.jsp
    -     error.jsp
    -     defaultContentPage.jsp
    All JSP files contain:
    <%@ taglib uri="/WEB-INF/lib/struts-tiles.tld" prefix="tiles" %>
    and

    <title>
    <tiles:getAsString name="title"/>
    </title>

    My �tiles-defs.xml�: =================================================
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE tiles-definitions PUBLIC
    "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
    "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
    <tiles-definitions>
    <!-- ================ RootLayout ======================= -->
    <definition name=".root.layout" path="/jsp/rootLayout.jsp" >
    <put name="title" value="Default title"/>
    <put name="header" value="/jsp/header.jsp"/>
    <put name="menu" value="/jsp/menu.jsp"/>
    <put name="content" value="/jsp/defaultContentPage.jsp"/>
    <put name="footer" value="/jsp/footer.jsp"/>
    </definition>
    <!-- ================ Extentions ======================= -->
    <!-- User -->
    <definition name=".view.user" extends=".root.layout">
    <put name="title" value="Welcome to the User Form."/>
    <put name="content" value="/jsp/user.jsp"/>
    </definition >
    <!-- Save -->
    <definition name=".view.save" extends=".root.layout">
    <put name="title" value="Welcome to the Show User Form."/>
    <put name="content" value="/jsp/show_user.jsp"/>
    </definition >
    <!-- Error -->
    <definition name=".view.error" extends=".root.layout">
    <put name="title" value="Error Message."/>
    <put name="content" value="/jsp/error.jsp"/>
    </definition >
    </tiles-definitions>
    My �struts-config.xml�: ==============================================
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
    "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
    <struts-config>
    <!-- ========== FormBeans =================================== -->
    <form-beans>
    <form-bean name="userForm" type="biz.seamrog.strutstest.model.state.UserForm"/>
    </form-beans>
    <!-- ========== Action Mapping Definitions=================== -->
    <action-mappings>
    <!-- Action using normal forward syntax...
    <action path="/user"
    forward="/jsp/user.jsp">
    </action>
    -->
    <!-- Action using a "Tiles" forward syntax...
    The "forward" path mappings are defined in a file named
    "../WEB-INF/tiles-defs.xml
    -->
    <action path="/user"
    forward=".view.user">
    </action>
    <!-- Action using normal forward syntax...
    <action path="/save"
    type="biz.seamrog.strutstest.model.logic.SaveAction"
    name="userForm" scope="request"
    input="/jsp/user.jsp">
    <forward name="success" path="/jsp/show_user.jsp"/>
    <forward name="failure" path="/jsp/error.jsp"/>
    </action>
    -->
    <!-- Tiles syntax -->
    <action path="/save"
    type="biz.seamrog.strutstest.model.logic.SaveAction"
    name="userForm" scope="request"
    input="/jsp/user.jsp">
    <forward name="success" path=".view.show_user"/>
    <forward name="failure" path=".view.error"/>
    </action>
    </action-mappings>
    <!-- ============== Global Forwards ======================== -->
    <global-forwards>
    <!-- NOTE: paths with "." syntax are Tiles defined paths,
    all other paths follow conventional "/path/to/file.jsp syntax
    -->
    <forward name="user" path=".view.user"/>
    <forward name="show_user" path=".view.show_user"/>
    <forward name="error" path=".view.error"/>
    <forward name="cssBase" path="/stylesheets/common.css"/>
    </global-forwards>
    <!-- ============= Plug-ins =============== -->
    <!-- Tiles Plug-in -->
    <plug-in className="org.apache.struts.tiles.TilesPlugin" >
    <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/>
    <set-property property="definitions-parser-validate" value="true" />
    <set-property property="moduleAware" value="true" />
    </plug-in>
    </struts-config>
    My �web.xml�: =====================================================
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>
    <web-app>
    <servlet>
    <!--
    MyController extends org.apache.struts.action.ActionServlet
    NOTE: The servlet could also be specified specifying the
    default Struts ActonServlet...
    <servlet-name>controller</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    ...I have chosen to extend here just for practice sake.
    -->
    <!--
    <servlet-name>MyController</servlet-name>
    <servlet-class>biz.seamrog.strutstest.controller.MyController</servlet-class>
    -->
    <servlet-name>MyController</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <!--
    Point to Struts configuration file(s)
    -->
    <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <!-- Tiles config -->
    <init-param>
    <param-name>definitions-config</param-name>
    <param-value>/WEB-INF/tiles-defs.xml</param-value>
    </init-param>
    <!-- This is the added Application parameter: -->
    <init-param>
    <param-name>application</param-name>
    <param-value>ApplicationResource</param-value>
    </init-param>
    <!-- end -->
    <load-on-startup>5</load-on-startup>
    </servlet>
    <!--
    All incoming requests that end in .do, send to MyController.
    -->
    <servlet-mapping>
    <servlet-name>MyController</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <!--
    Send initial requests to the login page for this application
    -->
    <welcome-file-list>
    <welcome-file>/jsp/user.jsp</welcome-file>
    </welcome-file-list>
    <!--
    Make all of the necessary related Struts JSP custom tag libraries
    available and define where to find them.
    -->
    <taglib>
    <taglib-uri>/WEB-INF/lib/struts-bean.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/struts-bean.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>/WEB-INF/lib/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/struts-html.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>/WEB-INF/lib/struts-logic.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/struts-logic.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>/WEB-INF/lib/struts-tiles.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/struts-tiles.tld</taglib-location>
    </taglib>
    </web-app>
    My �rootLayout.jsp�: ================================================
    <%@page contentType="text/html"%>
    <%@ taglib uri="/WEB-INF/lib/struts-tiles.tld" prefix="tiles" %>
    <html>
    <header>
    <title>
    <tiles:getAsString name="title" />
    </title>
    <body>
    <tiles:get name="header"/>
    <tiles:get name="menu"/> <tiles:get name="content"/>
    <tiles:get name="footer"/>
    </body>
    </html>

    I found an entry in the Mail Archive for Struts. I got it working. My working code is below. You need to in the base JSP import the header and put the 'title' out to it.
    tiles:def file:
    <!DOCTYPE tiles-definitions PUBLIC
    "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
    "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
    <tiles-definitions>
    <definition name=".petstore.Base" path="/common/petstorecommon.jsp">
    <put name="title" value ="${title}"/>
    <put name="header" value="/common/header.jsp"/>
    <put name="message" value="/common/message.jsp"/>
    <put name="content" value="${content}"/>
    <put name="navbar" value="/common/navbar.jsp"/>
    </definition>
    <definition name="petstore.Login" extends=".petstore.Base" >
    <put name="title" value="Login Page" />
    <put name="content" value="/Logon.jsp"/>
    <put name="test1" value="test1value"/>
    </definition>
    base tile def:
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
    <%@ page contentType="text/html;charset=windows-1252"%>
    <html:html>
    <head>
    <html:base/>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>pet store common (jsp)</title>
    </head>
    <body>
    <tiles:insert attribute="header">
    <%-- both of these attributes are accessible from header.jsp It works!!! --%>
    <tiles:put name="title" beanName="title" beanScope="tile" />
    <tiles:put name="test1" beanName="test1" beanScope="tile" />
    </tiles:insert>
    <%-- <tiles:get name="header" /> --%>
    <tiles:get name="message" />
    <tiles:get name="content" />
    <tiles:get name="navbar" />
    </body>
    </html:html>
    Getting access to the title value in the header.jsp file:
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
    <html>
    <head>
    <tiles:getAsString name="title" />
    <tiles:getAsString name="test1" />
    </head>
    <body>
    </body>
    </html>

  • Location of java servlet (not jsp) deployed on Java Stack

    Hello,
    Why this forum? this post is related to the way of calling a java servlet deployed on the java stack, so it's related to the structure of the stack than to real java programming.
    Usually, I develop JSP servlets which are easily called either with a mapping or not. I have deployed now a java servlet and added a mapping to it by modifying the xml source itselft in its descriptor, but after deployement I am not able to reach the resource.
    In the windows explorer of the java stack I find in j2ee>cluster>server>apps my application as follows:
    app_ear>servlet_jsp>app>root>WEB-INF>classes>my class files
    app_ear>servlet_jsp>app>root>app.jsp
    This time it's not a jsp that I want to call: app/app.jsp but my java servlet which lies in the classes subdir.
    Could someone help my to achieve this or is it the wrong way, we can only request jsp applications?
    Kind regards,
    Tanguy Mezzano

    Hi Vladimir,
    here's my web.xml code:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
         <display-name>WEB APP</display-name>
         <description>WEB APP description</description>
         <servlet>
              <servlet-name>SSORedirect3.jsp</servlet-name>
              <jsp-file>/SSORedirect3.jsp</jsp-file>
         </servlet>
         <servlet-mapping>
              <servlet-name>AuthenticatorServlet</servlet-name>
              <url-pattern>/SSOredirect3</url-pattern>
         </servlet-mapping>
         <security-constraint>
              <display-name>SecurityConstraint</display-name>
              <web-resource-collection>
                   <web-resource-name>WebResource</web-resource-name>
                   <url-pattern>/*</url-pattern>
                   <http-method>GET</http-method>
                   <http-method>POST</http-method>
              </web-resource-collection>
              <auth-constraint>
                   <role-name>DefaultSecurityRole</role-name>
              </auth-constraint>
         </security-constraint>
         <security-role>
              <role-name>DefaultSecurityRole</role-name>
         </security-role>
    </web-app>
    And in my jsp file, I have a form with this kind of code:
    <form name="xyz" method="GET" action="http://j2eeserver:50000/SSOredirect3/SSOredirect3">
    I get this error in my logs:
    com.sap.engine.services.servlets_jsp.server.exceptions.ServletNotFoundException: Requested resource [SSOredirect3/servlet/AuthenticatorServlet] not found.
    Exception id: [000C299F469E00650001D8E900000CCC000458E27823275B]#
    Best regards,
    Tanguy Mezzano

  • The server principal "XYuser" is not able to access the database "Ydb" under the current security context

    SQL2005 on winserver 2003. I have a view in Xdb that accesses tables in 2 different databases (Xdb and Ydb) on the same server. I have mixed mode security. I have a SQL user (XYuser) that has read access to all tables and views on both databases, yet when I try to access the view using a C# windows application I get the following error:
    The server principal "XYuser" is not able to access the database "Ydb" under the current security context
    This same scenario works under SQL 2000. I looked through the postings and tried to set TRUSTWORTHY ON on both databases but that didn't help. I can access any other views or tables on the SQL 2005 server, just not the one that joins the tables cross databases. Any help is much appreciated... john

    This appears to be a Login/Database Mapping issue.  I was having this problem, but was able to resolve it as follows:
    Using the SQL Server management Studio:
    In the Object explorer, under the SERVER security folder (not the database security folder), expand Logins. 
    That is: ServerName -> Security -> Logins
    NOT: ServerName -> Databases -> DatabaseName -> Security -> Users
    Select the Login that is having the troubles.  Right click on the Login and select ‘Properties.’
    The ‘User Mapping’ page should list all databases on the server with a check mark on the databases that the Login has been mapped to.  When I was getting the error, the database in question was not checked (even though the Login was assigned as a User on the database itself).  Map the Login by checking the box next to the database name.  Set the default schema.  Then select the roles for the Login in the Database role membership list box.  I selected db_datareader and public.  After clicking OK to save the changes, the problem was resolved.
    In order to ‘Map’ the Login, the Login must not already be as User on the database, so you may have to go to the database security (ServerName -> Databases -> DatabaseName -> Security -> Users) and delete the Login from the list of database Users before mapping the Login to the database.

  • Problem: package javax.servlet.jsp does not exist

    I am a novice JSP programmer. My projects that use any javax.servlet classes are not seeing those at all. I am working with a group of folks using Java SE 1.5. (Note: I'm using Windows so the directory separator is "\")
    What Used to work:
    1. Nearly all my projects were working using Java version 1.6. These projects were developed as examples from Wrox and Apress books about JSP and Struts.
    What has changed:
    1. I un-installed the version 1.6 of JDK and JRE, as well as tomcat, netbeans, and all the associated libraries/jars.
    2. I installed version 1.5 of JDK and JRE, as well as tomcat, netbeans, and all the associated libraries/jars.
    3. I updated my JAVA_HOME, CATALINA_HOME, CLASSPATH, and PATH environmental variables. I made sure that the path to servlet-api.jar (in the tomcat common\lib) is included in the classpath.
    What is wrong:
    1. References to javax.servlet.* are not satisfied--they are flagged in the source code in NetBeans and I get compiler errors with any project containing those references. For example:
    ... package javax.servlet.jsp does not exist
    import javax.servlet.jsp.*;
    What I've found:
    1. My CATALINA_HOME=C:\Java\Tomcat 5.5
    2. My JAVA_HOME=C:\Java\jdk1.5.0_11
    3. My CLASSPATH=.;C:\Program Files\QuickTime\QTSystem\QTJava.zip;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib;%JAVA_HOME%\lib\jsp-api.jar;%CATALINA_HOME%\common\lib\servlet-api.jar;C:\Java\logging-log4j-1.2.14\dist\lib\log4j-1.2.14.jar
    4. My PATH=c:\wint\BIN;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%CATALINA_HOME%\bin;C:\MySQL\MySQL Server 5.0\bin;D:\MiKTeX 2.5\miktex\bin;C:\Perl\bin\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\SFU\Perl\bin\;C:\SFU\common\;C:\Program Files\Lahey-Fujitsu Fortran\v7.1\Bin;C:\Program Files\Lahey-Fujitsu Fortran\v7.1\Win32\Bin
    What I need:
    1. I need to have some reference to the servlet classes satisfied in my configuration. Any help is appreciated.
    thanks
    jondr

    Oh. I got some over-the-shoulder debug help.
    My error was in the classpath specification:
    The path: %JAVA_HOME%\lib\jsp-api.jar
    Should be: %CATALINA_HOME%\lib\jsp-api.jar
    That contains the javax.servlet.jsp.*
    Thimk.
    Message was edited by: jon
    jondr

  • HTTP (Axis) Receiver Adapter error: The security context token is expired or is not valid

    Hi Experts,
    We are required to send a message through PI 7.31 (single stack) in a Soap-to-Soap scenario connecting to a Soap 1.2 Web Service.
    We are getting a Security Context Token expired or Invalid error.
    Please help us resolving this error.
    Thanks in advance!
    The Channel Configurations are as follows:
    Processing sequence:
    Module configurations:
    1.
    2.
    3.
    4.
    Best Regards
    Vikram

    Hi all !
    First of all, thanks for your answers..
    Stefan Grube:
    Itu2019s not a Adapter Module.
    The module tab  following configuration
    Processing Sequence:
    AF_Adapters/axis/AFAdapterBean     Local Enterprise Bean     afreq
    AF_Adapters/axis/HandlerBean                     Local Enterprise Bean     xireq
    AF_Adapters/axis/HandlerBean                     Local Enterprise Bean     trp
    AF_Adapters/axis/HandlerBean                     Local Enterprise Bean     dcres
    AF_Adapters/axis/HandlerBean                     Local Enterprise Bean     xires
    AF_Adapters/axis/AFAdapterBean     Local Enterprise Bean     afres
    Module Configuration
    xireq          handler.type     java:com.sap.aii.axis.xi.XI30OutboundHandler
    trp          handler.type     java:com.sap.aii.adapter.axis.ra.transport.http.HTTPSender
    trp          module.pivot     true
    xires          handler.type     java:com.sap.aii.axis.xi.XI30OutboundHandler
    How can i know if those values are correct ?
    Srinivas Reddy:
    Thanks for the documentation
    I have applied SAP Note 11016021 and the error changed, now it says:
    Axis: fatal error in invocation: java.lang.NoSuchMethodError: com/sap/aii/axis/xi/XIUtils.setOperation(Ljava/lang/String;Lorg/apache/axis/MessageContext;)V
    Message processing failed. Cause: com.sap.engine.services.ejb.exceptions.BaseTransactionRolledbackLocalException: Exception thrown in method process. The transaction is marked for rollback.
    Edited by: Antonio Guzman on Jul 9, 2008 5:29 PM

  • Package javax.servlet.jsp does not exist.

    dear all!
    I've one program which import javax.servlet.jsp.* as one of the package to be used in
    the program, and I am using j2sdk 1.4.0_01 to compiled it.
    However I got this error message : package javax.servlet.jsp does not exist.
    Where does it wrong?.
    error message like :
    logisticslib.java:6: package javax.servlet.jsp does not exist
    import javax.servlet.jsp.*;
    ^
    logisticslib.java:201: cannot resolve symbol
    symbol : class JspWriter
    location: class elogistic.db.logisticslib
    public void getServiceInfo(JspWriter out, String SQL) {

    You need a J2EE implementation, I recomemend Tomcat, you also need to put the .jar w/ the implementation in in your classpath.

  • Current Security Context Not Trusted When Using Linked Server From ABAP

    Hello,
    I am experiencing a head-scratcher of a problem when trying to use a Linked Server connection to query a remote SQL Server database from our R/3 system.  We have had this working just fine for some time, but after migrating to new hardware and upgrading OS, DBMS, and R/3, now we are running into problems.
    The target database is a named instance on SQL Server 2000 SP3, Windows 2000 Server.  The original source R/3 system was 4.7x2.00, also on SQL Server 2000 (SP4), Windows 2000 Server.  I had been using a Linked Server defined via SQL Enterprise Manager (actually defined when the source was on SQL Server 7), which called an alias defined with the Client Network Utility that pointed to the remote named instance.  This alias and Linked Server worked great for several years.
    Now we have migrated our R/3 system onto new hardware, running Windows Server 2003 SP1 and SQL Server 2005 SP1.  The application itself has been upgraded to ECC 6.0.  I performed the migration with a homogeneous system copy, and everything has worked just fine.  I redefined the Linked Server on the new SQL 2005 installation, this time avoiding the alias and referencing the remote named instance directly, and it tests out just fine using queries from SQL Management Studio.  It also tests fine with OSQL called from the R/3 server console, both when logged on as SAPServiceSID with a trusted connection, and with a SQL login as the schema owner (i.e., 'sid' in lowercase).  From outside of R/3, I cannot make it fail.  It works perfectly.
    That all changes when I try to use the Linked Server within an ABAP application, however.  The basic code in use is
    EXEC SQL.
       SET XACT_ABORT ON
       DELETE FROM [SERVER\INSTANCE].DATABASE.dbo.TABLE
    ENDEXEC.
    The only thing different about this code from that before the upgrade/migration is the reference to [SERVER\INSTANCE] which previously used the alias of just SERVER.
    The program short dumps with runtime error DBIF_DSQL2_SQL_ERROR, exception CX_SY_NATIVE_SQL_ERROR.  The database error code is 15274, and the error text is "Access to the remote server is denied because the current security context is not trusted."
    I have set the "trustworthy" property on the R/3 database, I have ensured SAPServiceSID is a member of the sysadmin SQL role, I've even made it a member of the local Administrators group on both source and target servers, and I've done the same with the SQL Server service account (it uses a domain account).  I have configured the Distributed Transaction Coordinator on the source (Win2003) system per Microsoft KB 839279 (this fixed problems with remote queries coming the other way from the SQL2000 system), and I've upgraded the system stored procedures on the target (SQL2000) system according to MS KB 906954.  I also tried making the schema user a member of the sysadmin role, but naturally that was disastrous, resulting in an instant R/3 crash (don't try this in production!), so I set it back the way it was (default).
    What's really strange is no matter how I try this from outside the R/3 system, it works perfectly, but from within R/3 it does not.  A search of SAP Notes, SDN forums, SAPFANS, Microsoft's KnowledgeBase, and MSDN Forums has not yielded quite the same problem (although that did lead me to learning about the "trustworthy" database property).
    Any insight someone could offer on this thorny problem would be most appreciated.
    Best regards,
    Matt

    Good news! We have got it to work. However, we did it in something of
    a backwards way, and I'm sure you'll laugh when you see how it was done. Also, the solution depends upon the fact that the remote server is still using SQL Server 2000, and so doesn't have quite so many restrictions placed upon it for distributed transactions and Linked Servers as SQL Server 2005 now does.
    At the heart of the solution is the fact that the Linked Server coming FROM the remote server TO our SAP system works fine. Finally, coupled with the knowledge that using DBCON on the SAP side to the remote server also does actually provide a connection (see Notes 323151 and 738371), we set up a roundabout way of achieving our goal. In essence, from ABAP, we set up the DBCON connection to the remote server, at which point all the Native SQL commands execute in the context of the remote server. From within that connection, we
    reference the tables in SAP via the Linked Server defined on the remote
    server, as if SAP were the remote server, selecting data from SAP and inserting it into the remote (but apparently local to this connection) tables.
    So, to spell it out, we define a Linked Server on the remote server pointing back to the SAP server as SAPSERV, with a SQL login mapping defined on the remote system pointing back to a SQL login in the SAP database. We also define a connection to the remote server from SAP using DBCON, using that remote SQL login for authentication.
    Then, in our ABAP code, we simply do something along the lines of
    exec sql.
       set connection 'REMOTE'
    endexec.
    exec sql.
       connect to 'REMOTE'
    endexec.
    exec sql.
       insert into REMOTE_TABLE
          select * from SAPSERV.SID.sid.SAP_TABLE
    endexec.
    exec sql.
       commit
    endexec.
    exec sql.
       disconnect 'REMOTE'
    endexec.
    This is, of course, a test program, but it demonstrated that it worked,
    and we were able to see that entries were appropriately deleted and inserted in the remote server's table. The actual program for use is a little more complex, in that there are about four different operations at different times, and we had to resolve the fact that the temp table SAP_TABLE was being held in a lock by our program, resulting in a deadly embrace, but our developer was able to work that out, and all is now well.
    I don't know if this solution will have applicability to any other customers, but it works for us, for now.
    SAPSERV, REMOTE, REMOTE_TABLE, and SAP_TABLE are, of course, placeholder names, not the actual server or table names, so as not to confuse anyone.
    Best regards,
    Matt

  • JAAS security prncipal not propogating in EJB web service end point

    I have a web application which communicate a independent EJB module via web service end points. when request reaches the web service principal is found as null. I use BASIC authentication in web page. I works well on web pages.
    Pl. help me how jaas security principals, group and roles an be propogated to a web service

    Took a look at your .ear file .
    So here's the problem .You are trying to use sun's proptrietary DD entries to secure an ejb-ws : <login-config> from is an entry from sun's proprietary DD.(sun-ejb-jar.xml)
    oracle also provides a mechanism to transport secure an ejb-ws , though the publicly available version of app server (the one you have , did not had that feature ).The next drop will have the same .
    Having said that , what you have should be enough to secure an ejb-ws if you are using only BASIC auth .
    I can see that your EJB has some C:\... entries , unless those entries have the right security permissions , your ejb would not be able to load them , with the security credentials sent from the client .
    When I deployed and ran your .ear file ,
    I got errors such as
    <faultstring>Internal Server Error (caught exception while handling request: oracle.oc4j.rmi.OracleRemoteException: Error in ejbCreate(): nested exception is: javax.naming.NameNotFoundException: java:comp/env/configFileContent not found in RoSrapScriptExecServiceImplWSI; nested exception is: javax.ejb.EJBException: nested exception is: javax.naming.NameNotFoundException: java:comp/env/configFileContent not found in RoSrapScriptExecServiceImplWSI)</faultstring>
    </env:Fault>
    implying that there are some references to entries not available inside the .ear .
    you can test if the ejb-ws is deployed and running by using the test page through your browser :
    http://<your host>:8888/rochade/srap/scriptExecWSI
    Anirban

  • JSP class not found in WL7.1Sp1

              Environment : Windows 2000 with Wl 7.1 Sp1
              I have sucessfully deployed an J2EE 1.2 compliant ear file with 2 war files and
              1 jar file containing beans and 1 jar file containing util classes. All the war
              and jar file include appropriate weblogic 7.1 specific xml files and the beans
              contain WL generated stubs and skeleton. The war files define a context each.
              I sucessfully deploying the application and verified that the contexts are registered
              and was able to access the *.gif files from the defined contexts through the brower.
              But when I try to access the jsp pages from the context, I get the error message
              <Jan 24, 2003 10:20:46 AM CST> <Error> <HTTP> <101249> <[ServletContext(id=83679
              06,name=testdir.war,context-path=/testdir)]: Servlet class jsp_servlet.__testpag
              e for servlet testpage.jsp could not be loaded because the requested class was
              n
              ot found in the classpath D:\bea\user_projects\ApptricityERM\ApptricityERMServer
              \.wlnotdelete\ApptricityERM\testdir.war.
              java.lang.ClassNotFoundException: jsp_servlet.__testpage>
              <Jan 24, 2003 10:20:46 AM CST> <Error> <HTTP> <101018> <[ServletContext(id=83679
              06,name=testdir.war,context-path=/testdir)] Servlet failed with ServletException
              javax.servlet.ServletException: [ServletContext(id=8367906,name=testdir.war,cont
              ext-path=/testdir)]: Servlet class jsp_servlet.__testpage for servlet testpage.j
              sp could not be loaded because the requested class was not found in the classpat
              h D:\bea\user_projects\ApptricityERM\ApptricityERMServer\.wlnotdelete\Apptricity
              ERM\testdir.war.
              java.lang.ClassNotFoundException: jsp_servlet.__testpage
              at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubI
              mpl.java:785)
              at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:222)
              at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:164)
              at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.
              java:517)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
              pl.java:351)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
              pl.java:306)
              at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
              n.run(WebAppServletContext.java:5412)
              at weblogic.security.service.SecurityServiceManager.runAs(SecurityServic
              eManager.java:744)
              at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
              rvletContext.java:3086)
              at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
              pl.java:2544)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:153)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:134)
              >
              Appreciate any feeback and suggestions
              Thanks
              Sekar
              P.S : I have independently verified thru a standalone java program that the Beans
              are bound correctly and the Datasources are working as expected.
              

    Hi,
    looks a problem regarding classpath settings
    The directory upto which the packaging starts
    should be in the class path.
    for e.g
    ..\Appl
    |__ com...
    Here packaging starts from under dir Appl
    Just add Appl to u'r classpath and it should compile

  • What is the best editor to use for JSP/Servlet?

    Hello,
    What is the best editor to use for JSP/Servlet database development.
    I'm looking at Dreamweaver,Java Studio Creator.
    I want some thing fairly easy to use that has database helper wizards like dreamweaver.
    Thanks for the help.
    Frank

    Is it better to have a servlet do the database work and call it from JSP?No, it's better to have persistence objects do the database work. Servlets handle HTTP requests, and JSPs are HTML factories that should be pure view.
    But there are lots of ways to do things. You just have to understand the tradeoffs when you decide.
    I do not want to hammer out code, I want to learn the
    best way to do things from experienced developers. Sorry, sounded like you just wanted to churn stuff.
    "best way" can be subjective. In one app, "best" might be "delivered fastest". For another, "best" might be "most secure" or "most easily modified" or "best performing" or whatever. You won't get a "best" answer, only different choices. And they aren't always so easy to explain or execute.
    I'd recommend that you start by reading about layered applications (3-tier architectures) and MVC separation. Once you've Googled enough about that, look into a framework like Struts or Spring or WebWork. That'll help you figure out where to put each responsibility in your app.
    I can use dreamweaver to create web apps, but I hate
    the arrays used to define fields. It also seems not
    to take advantage of connection pooling.Don't know what you're talking about here, Frank. What do fields have to do with connection pooling?
    %

  • Error - Name jdbc is not bound in this Context

    Hi,
    i wanted to use Datasource in JDBC to make connection with mysql
    suport and want to excute Jsp page but not able to execte some error is
    getting.
    1)Jsp Page: data_source.jsp
    <%@ page session="true" import="java.sql.*,javax.sql.*,javax.naming.*" %>
    <HTML>
    <body bgcolor="blue">
    <H1 align = "center" >
    Welcome to User and can see the DataSource Connection
    <%
    InitialContext ctx = new InitialContext();
    DataSource ds = (DataSource)ctx.lookup("jdbc/test");
    Connection conn = ds.getConnection();
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * from emp");
    if(rs.next())
    %>
    <table width="100%" border="1" >
    <tr align="left">
    <th>Name</th>
    <th>Dept</th>
    </tr>
    <%
    do
    %>
    <TD> <%= rs.getString("Name") %> </TD>
    <TD> <%= rs.getString("Dept") %> </TD>
    <%
    }while(rs.next());
    %>
    </table>
    <%
    }else {
    %>
    No Results from Query:
    <%
    rs.close();
    stmt.close();
    conn.close();
    ctx.close();
    %>
    </body>
    </html>
    2) web.xml file content
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <description>MySQL Test App</description>
    <resource-ref>
    <description>Mysql DB Connection</description>
    <res-ref-name>jdbc/test</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    <servlet>
    <servlet-name>s1</servlet-name>
    <servlet-class>first</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>s1</servlet-name>
    <url-pattern>/test</url-pattern>
    </servlet-mapping>
    </web-app>
    3) myhealth.xml or server.xml
    <?xml version='1.0' encoding='utf-8'?>
    <Context docBase="C:/Program Files/Apache Software Foundation/Tomcat
    5.0/myhealth" path="/myhealth" reloadable="true" privileged="true">
    <Resource name="jdbc/test"
    scope="Shareable" type="javax.sql.DataSource"
    auth="Container" description="hOME.."/>
    <ResourceParams name="jdbc/test">
    <parameter>
    <name>driverClassName</name>
    <value>com.mysql.jdbc.Driver</value>
    </parameter>
    <parameter>
    <name>url</name>
    <value>jdbc:mysql://localhost:3306/test?autoReconnect=true</value>
    </parameter>
    <parameter>
    <name>username</name>
    <value>root</value>
    </parameter>
    <parameter>
    <name>password</name>
    <value>test</value>
    </parameter>
    </ResourceParams>
    </Context>
    4) Error which i got during execution of data_Source.jsp page.
    HTTP Status 500 -
    type Exception report
    message
    description The server encountered an internal error () that prevented it
    from fulfilling this request.
    exception
    javax.servlet.ServletException: Name jdbc is not bound in this Context
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:867)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:800)
    org.apache.jsp.Data_005fSource_jsp._jspService(Data_005fSource_jsp.java:115)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    root cause
    javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
    org.apache.naming.NamingContext.lookup(NamingContext.java:815)
    org.apache.naming.NamingContext.lookup(NamingContext.java:198)
    org.apache.naming.SelectorContext.lookup(SelectorContext.java:183)
    javax.naming.InitialContext.lookup(InitialContext.java:351)
    org.apache.jsp.Data_005fSource_jsp._jspService(Data_005fSource_jsp.java:56)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    As i made datasource Context using Tomcat apache. But i still get same error.
    I tried so much from Google search, please give me proper solution.
    Coz this is the common problem most of the programmers face initally
    Thanks,
    Prabhat

    i installed tomcat. the installation is done successfully..
    But i can't connect to the db(MySQL)
    i am getting some errors regarding some exception like
    **org.apache.jasper.JasperException: An exception occurred processing JSP page /TestTomcatToMySQLConn.jsp at line 16**
    **13:          Context ctx = new InitialContext();**
    **14:*          if(ctx == null )*
    *15:              throw new Exception("Boom - No Context");*
    *16:           ds = (DataSource)ctx.lookup("java:comp/env/jdbc/testDB");*
    *17:*
    *18:   if(ds == null )*
    *19:       throw new Exception("Boom - No Datasource");*
    Stacktrace:_
    *     org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)*
    *     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)*
    *     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)*
    *     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)*
    *     javax.servlet.http.HttpServlet.service(HttpServlet.java:803)*
    root cause_
    javax.servlet.ServletException: javax.naming.NameNotFoundException: Name jdbc is not bound in this Context_
    *     org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)*
    *     org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)*
    *     org.apache.jsp.TestTomcatToMySQLConnjsp._jspService(TestTomcatToMySQLConn_jsp.java:88)*_
    *     org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)*
    *     javax.servlet.http.HttpServlet.service(HttpServlet.java:803)*
    *     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)*
    *     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)*
    *     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)*
    *     javax.servlet.http.HttpServlet.service(HttpServlet.java:803)*
    please Help

  • The requested resource (/DBTest/SearchInventory.jsp) is not available.

    Hi,
    I have a search screen (jsp page) which has four fields to base the search on. Once the "Search" button is clicked, i am going to a servlet which does a select based on the search criteria, and stores the result in a ResultSet object. I then use the setAttribute method to store the result set in a bean. Here is the code for what i've just described:
    rs=stmt.executeQuery(QueryStr); //get result set
    HttpSession session=req.getSession(true);//create session var
    session.setAttribute("s_resbean",rs);//set bean attribute
    After this is set, i want to forward/redirect (whatever works...nothin does right now...the reason for this post.) back to the search screen(jsp page), and display the query ResultSet in the bottom half of the screen. I use the following code to do this:
    String url="/DBTest/SearchInventory.jsp";
    RequestDispatcher dispatcher=getServletContext().getRequestDispatcher(url);
    dispatcher.forward(req,res);
    Unfortunately, this gives me the following error:
    The requested resource (/DBTest/SearchInventory.jsp) is not available.
    Why would this be happening?? Is there another way of doing this? I'm just trying to follow the example in chp.15 of the free coreservlets pdf...
    Thanks in advance,
    Aditya.
    P.S. Here is the code for my bean...don't know if it's needed...
    public class SearchBean extends HttpServlet{
         private int searchFlag=0;
         private ResultSet searchRS;
         public SearchBean(){
         public int getSearchFlag(){
              return searchFlag;
         public ResultSet getSearchRS(){
              return searchRS;
         public void setSearchRS(ResultSet rs){
              this.searchRS=rs;
         public void setSearchFlag(){
              this.searchFlag=1;
    }

    I assume DBTest is the context root for your webapp.
    ServletRequest.getRequestDispatcher(String url) is looking for a url relative to the context root. Therefore if my assumption is correct you want to use the url /SearchInventory.jsp, removing the DBTest.
    HTH.

  • Servlets not working in tomcat-4.1.24

    Servlets are not working in a new context which I have created in tomcat-4.1.24. if i put the same servlet in examples context it is working. jsps are working in the new context also. any idea????
    binny

    Suppose your servlets class is called "app", you need to add this in your web.xml file
    <servlet>
    <servlet-name>app</servlet-name>
    <servlet-class>app</servlet-class>
    <servlet-mapping>
    <servlet-name>app</servlet-name>
    <url-pattern>/app</url-pattern>
    </servlet-mapping>
    </servlet>

Maybe you are looking for