Errors on RequestDispatcher
I use Weblogic6.1 SP2
I implemented new ServletRequest below coded as NewRequest class.
This class is used in AServlet.
if AServlet doesn't use newrequest, then no dispatch problem.
But with NewRequest like i coded below, i see this message "javax.servlet.ServletException:
Original request not available".
New implementation of ServletRequest has any problem??
public class NewRequest implements ServletRequest, HttpServletRequest {
public class AServlet extends HttpServlet {
public void doGet(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws javax.servlet.ServletException, java.io.IOException
NewRequest newrequest = new NewRequest(request);
RequestDispatcher rd = getServletContext().getRequestDispatcher("/test/a.jsp");
try{
rd.forward(newrequest,response);
}catch(Exception e){
System.out.println("error : "+e);
throw new ServletException();
request.getRequestDispatcher (String url) can take url begining with / and not with http://.......
Similar Messages
-
Error using RequestDispatcher ....
Hi. I have a directory structure like this
tomcat
|--webapps
|-------openjms
|------------WEB-INF
|-----------------classes
|----------------------CreateConsumer.java
|-------project
|------------WEB-INF
|------------------classes
|-----------------------project
|----------------------------DBServlet.java
Hope you guys understand this "tree" ;-o
If DBServlet.java is running, how do I use the RequestDispatcher to send the request to CreateConsumer.java??
is it
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(../../../..????);
thanks.I've never tried this, but the API docs refer to javax.servlet.ServletContext.getContext().
The call should be:
RequestDispatcher rd = getServletContext().getContext("/openjms").getRequestDispatcher(...);
If you do try this, could you post the results? -
import javax.servlet.http.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.*;
import java.io.*;
import javax.servlet.*;
public class SendMail extends HttpServlet
public void doPost(HttpServletRequest request, HttpServletResponse response) {
MailInfo mailInfo = new MailInfo();
String from = request.getParameter("from");
String to = request.getParameter("to");
String host = request.getParameter("host");
String message = request.getParameter("message");
String file = request.getParameter("file");
String subject = request.getParameter("subject");
mailInfo.setFrom(from);
mailInfo.setTo(to);
mailInfo.setHost(host);
mailInfo.setMessage(message);
mailInfo.setSubject(subject);
//response.reset();
request.setAttribute("mailInfo",mailInfo);
try{
Session mailSession = Session.getDefaultInstance(new Properties(),null);
Address fromAddress = new InternetAddress(from);
Address toAddress = new InternetAddress(to);
MimeMultipart multipart = new MimeMultipart();
MimeBodyPart bodyPart = new MimeBodyPart();
bodyPart.setContent(message,"text/plain");
multipart.addBodyPart(bodyPart);
bodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(file);
bodyPart.setDataHandler(new DataHandler(source));
multipart.addBodyPart(bodyPart);
MimeMessage mess = new MimeMessage(mailSession);
mess.setContent(multipart);
mess.setFrom(fromAddress);
mess.addRecipient(Message.RecipientType.TO,fromAddress);
Transport transport = mailSession.getTransport("smtp");
transport.connect(host,"","");
transport.sendMessage(mess, mess.getAllRecipients());
transport.close();
RequestDispatcher rd = getServletContext().getRequestDispatcher("/success.jsp");
rd.forward(request, response); }catch(Exception e){
When i run this servlet it throws an excpetion is:java.lang.IllegalStateException. This exception is thrown by the rd.forward command. I can not process it. Who can process this problem please help me. This is my email :[email protected]. Thanks a lotWhat is the stack trace of the exception?
- Saish -
JSP form values lost upon servlet request (RequestDispatcher)
Hello,
I have a query screen (jsp) that calls a servlet and gets results. However, although the results or errors display just fine (I do a setAttribute for them), I lose the initial values in the query form (values that the user input - which are stored in the request object). Shouldn't those values be maintained and displayed, since I'm using the RequestDispatcher and thus, I should have the same request object? Thank you, C Turner
*****My JSP (the related code)*****
<jsp:useBean id="form" class="com.foo.ActivityBean" scope="session">
<jsp:setProperty name="form" property="*"
</jsp:useBean>
<HTML>
<BODY>
<FORM ACTION="ActivityFormHandler" METHOD="POST">
<P><B>From Date</B>
<INPUT TYPE="TEXT" NAME="fromDate" SIZE="9" VALUE="<jsp:getProperty name="form" property="fromDate"/>">
<P><B>To Date</B>
<INPUT TYPE="TEXT" NAME="fromDate" SIZE="9" VALUE="<jsp:getProperty name="form" property="toDate"/>">
*****Java from my HttpServlet, ActivityFormHandler (acting as a formhandler)*****
if (errors.size() == 0) {
ActivityBean myActivityBean = new ActivityBean();
myActivityBean.setBeanQueryValues(acctNumber, department, fromDate, toDate);
Vector resultsVector = null;
try {
resultsVector = myActivityBean.executeQuery();
} catch (CreateException ce) {
errors.add("There was a problem retrieving the requested data from the database.");
request.setAttribute("results", resultsVector);
} else {
//Data is not okay.
String[] errorArray = (String[])errors.toArray(new String[errors.size()]);
request.setAttribute("errors", errorArray);
RequestDispatcher rd;
rd = getServletContext().getRequestDispatcher("/public_html/ActivityQuery.jsp");
//rd.forward(request, response);
rd.include(request, response);For those interested in my question, here's what I figured out.
Instead of:
<INPUT TYPE="TEXT" NAME="fromDate" SIZE="9" VALUE="<jsp:getProperty name="form" property="fromDate"/>">
Use:
<INPUT TYPE="TEXT" NAME="fromDate" SIZE="9" VALUE="<%out.print(request.getParameter("fromDate"));%>">
This allows the input field to persist the query value instead of blanking it out when the results are displayed. -ct -
Java.lang.UnsatisfiedLinkError: nativeSAP_CMLISTEN - Error
Hi All,
We are in process of upgrading SRM Java from 7.01 to 7.02. While JSPM was running 250GB of trace files (around 29317 files) have been written under D:\usr\sap\SJ7\JC01\j2ee\cluster\server0 and we are forced to stop JSPM and complete SAP instance.
As soon as we start the instance with minutes 1GB trace files are written. All these files are dev_jrfc_xxxxx.trc.
All these files have single error repeated continuously, kindly let us know how to resolve this issue.
Error file opened at 20110706 102426 Eastern Daylight Time Rel 7.01.3 (2008-10-28) [710.234]
Error thrown [Wed Jul 06
10:26:12,128]:Error in RequestDispatcher.DispatcherWorker.run() java.lang.UnsatisfiedLinkError: nativeSAP_CMLISTEN
at com.sap.mw.rfc.driver.CpicDriver.nativeSAP_CMLISTEN(Native Method)
at com.sap.mw.rfc.driver.CpicDriver.SAP_CMLISTEN(CpicDriver.java:1137)
at com.sap.mw.rfc.driver.RfcTypeRegisterCpic.waitForRequest(RfcTypeRegisterCpic.java:593)
at com.sap.mw.rfc.api.RfcApi.RfcWaitForCpicRequest(RfcApi.java:1262)
at com.sap.mw.jco.MiddlewareJRfc.waitForRequest(MiddlewareJRfc.java:641)
at com.sap.mw.jco.RequestDispatcher$DispatcherWorker.run(RequestDispatcher.java:159)
at java.lang.Thread.run(Thread.java:534)
Regards,
Siva.Hi,
java.lang.UnsatisfiedLinkError:
This exception is raised, when there is a problem loading the native SAP JCo library (Windows: sapjco3.dll or UNIX: libsapjco3.so). Typical reasons for this are:
native library is not in the same directory as sapjco3.jar
native library is for incorrect OS
native library is for 64-bit, but Java used is 32-bit. or vice-versa. E.g. use java -d64 option
there is a problem loading dependent libraries
Also, please check if the required ports are open.
Hope this helps. -
Error while upgrading SRM portal from 7.01 to 7.02
Hi All,
We are in process of upgrading SRM Java from 7.01 to 7.02. While JSPM was running 250GB of trace files (around 29317 files) have been written under D:\usr\sap\SJ7\JC01\j2ee\cluster\server0 and we are forced to stop JSPM and complete SAP instance.
As soon as we start the instance with minutes 1GB trace files are written. All these files are dev_jrfc_xxxxx.trc.
All these files have single error repeated continuously, kindly let us know how to resolve this issue.
Error file opened at 20110706 102426 Eastern Daylight Time Rel 7.01.3 (2008-10-28) [710.234]
Error thrown [Wed Jul 06
10:26:12,128]:Error in RequestDispatcher.DispatcherWorker.run() java.lang.UnsatisfiedLinkError: nativeSAP_CMLISTEN
at com.sap.mw.rfc.driver.CpicDriver.nativeSAP_CMLISTEN(Native Method)
at com.sap.mw.rfc.driver.CpicDriver.SAP_CMLISTEN(CpicDriver.java:1137)
at com.sap.mw.rfc.driver.RfcTypeRegisterCpic.waitForRequest(RfcTypeRegisterCpic.java:593)
at com.sap.mw.rfc.api.RfcApi.RfcWaitForCpicRequest(RfcApi.java:1262)
at com.sap.mw.jco.MiddlewareJRfc.waitForRequest(MiddlewareJRfc.java:641)
at com.sap.mw.jco.RequestDispatcher$DispatcherWorker.run(RequestDispatcher.java:159)
at java.lang.Thread.run(Thread.java:534)
Regards,
Siva.Hi Siva,
it seems to me that you have heavy log archiving on the system. You can switch the log severity of all (or at least most) of the locations to the default. In addition, switch off the archiving of old log files:
In the visual configtool navigate to Server -> Services -> Log Configurator -> Properties tab and set the value of the ArchiveOldLogFiles to "OFF".
Also, using the Visual Administrator -> Services -> Log Configurator -> restore to default all the trace levels.
Regards,
Jonas Cella -
Request.getParameter() always returns null
I have a html file and am trying to retrieve the values from a formin my servlet.
here is the html code:
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<h1><b>Add DVD</b></h1>
</head>
<body>
<form action="add_dvd.do" method="POST">
Title:<input type="text" name="title" />
Year:<input type="text" name="year" />
Genre: <select name='gselected'>
<option value='Sci-Fi'>Sci-Fi</option>
</select>
or enter new genre:<input type="text" name='gentered' value="" />
<input type="submit" value="Add DVD" />
</form>
</body>
</html>
and here is the servlet code:
public class AddDVDServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// System.out.println("in AddDVDServlet post method");
List errorMsgs = new LinkedList();
//retrieve form parameters
try{
String title = request.getParameter("title").trim();
String year = request.getParameter("year").trim();
*String gentered = request.getParameter("gentered");
String gselected = request.getParameter("gselected");
String genre="";
if("".equals(gentered))
genre = gselected;
else
genre = gentered;
// System.out.println("parameter retrieved");
if(!year.matches("\\d\\d\\d\\d"))
// System.out.println("year not 4 digit long");
errorMsgs.add("Year must be four digit long");
if("".equals(title))
// System.out.println("title not entered");
errorMsgs.add("Please enter the title of the dvd");
if("".equals(genre))
// System.out.println("genre not valid");zdf
errorMsgs.add("Enter genre.");
if(! errorMsgs.isEmpty())
//System.out.println("errors in entry ");
request.setAttribute("errors",errorMsgs);
// System.out.println("error attribute set in request");
RequestDispatcher rd = request.getRequestDispatcher("error.view");
rd.forward(request, response);
return;
//create DVDItem instance
DVDItem dvd = new DVDItem(title,year,genre);
request.setAttribute("dvdItem",dvd);
RequestDispatcher rd = request.getRequestDispatcher("success.view");
rd.forward(request, response);
catch(Exception e){
errorMsgs.add(e.getMessage());
request.setAttribute("errors",errorMsgs);
RequestDispatcher rd = request.getRequestDispatcher("error.view");
rd.forward(request, response);
e.printStackTrace();
System.out.println("exception:"+e);
why does getParameter always return null??? whats wrong?I don't know. However, I suspect that because you have a tag with the same name as 'title', its causing a name conflict. Chnage the name to something else. If it works, then that's the likely explaination.
-
JSP - Bean - Scope Issue with ResultSet
Hi there,
I have a JSP page that uses a Bean to get ResultSets from a db. My methods return ResultSets, but they seem to get out of scope on the JSP page when I try to use them. I'm not sure why. I have included 2 snippets below one that works and one that doesn't. I get a java.lang.null exception when the page is run. Not sure how or why the variable seems to go out of scope? I can work around it, but I would rather find out why this is happening.
This one fails:
<%@ page errorPage="error.jsp" %>
<%@ page import="utils.LookupBean" %>
<%@ page import="java.sql.ResultSet" %>
<%
try{
%>
<html>
<head>
<title>lookup</title>
</head>
<body>
<jsp:useBean id="lookup" class="utils.LookupBean">
<%
ResultSet roem = lookup.getOEMDropdown();
//open db conn
lookup.openIlprod();
if(roem!=null){
%>
OEM:
<select name="OEM">
<%
while(roem.next()){
%>
<option value="<%=roem.getString("id")%>"><%=roem.getString("name")%></option>
<%
%>
</select><br><br>
<%
else{
out.println("OEM: no records<br><br>");
%>
</jsp:useBean>
</body>
</html>
<%
catch(Exception e){
//log to Tomcat
%>
This one works....why??
<%@ page errorPage="error.jsp" %>
<%@ page import="utils.LookupBean" %>
<%@ page import="java.sql.ResultSet" %>
<%
try{
%>
<html>
<head>
<title>lookup</title>
</head>
<body>
<jsp:useBean id="lookup" class="utils.LookupBean">
<%
//open db conn
lookup.openIlprod();
ResultSet roem = lookup.getOEMDropdown();
if(roem!=null){
%>
OEM:
<select name="OEM">
<%
while(roem.next()){
%>
<option value="<%=roem.getString("id")%>"><%=roem.getString("name")%></option>
<%
%>
</select><br><br>
<%
else{
out.println("OEM: no records<br><br>");
%>
</jsp:useBean>
</body>
</html>
<%
catch(Exception e){
//log to Tomcat
%><%@ page errorPage="error.jsp" %>
<%@ page import="utils.LookupBean" %>
<%@ page import="java.sql.ResultSet" %>
<%
String ilprod_db_user;
String ilprod_db_pass;
String tedsi_prod_owner;
String nsp_portal_owner;
String iladmin_owner;
String ilprod_db_host;
String ilprod_db_port;
String ilprod_db_service;
try{
//get the ilprod_db_user from the deployment descriptor
ilprod_db_user = (String)getServletContext().getInitParameter("ilprod_db_user");
//ensure a value is present
if(ilprod_db_user==null||ilprod_db_user.equals("")){
throw new ServletException("Error retrieving ilprod_db_user from deployment descriptor. - ilprod_db_user is null or an empty string");
//get the ilprod_db_pass from the deployment descriptor
ilprod_db_pass = (String)getServletContext().getInitParameter("ilprod_db_pass");
//ensure a value is present
if(ilprod_db_pass==null||ilprod_db_pass.equals("")){
throw new ServletException("Error retrieving ilprod_db_pass from deployment descriptor. - ilprod_db_pass is null or an empty string");
//get the tedsi_prod_owner from the deployment descriptor
tedsi_prod_owner = (String)getServletContext().getInitParameter("tedsi_prod_owner");
//ensure a value is present
if(tedsi_prod_owner==null||tedsi_prod_owner.equals("")){
throw new ServletException("Error retrieving tedsi_prod_owner from deployment descriptor. - tedsi_prod_owner is null or an empty string");
//get the nsp_portal_owner from the deployment descriptor
nsp_portal_owner = (String)getServletContext().getInitParameter("nsp_portal_owner");
//ensure a value is present
if(nsp_portal_owner==null||nsp_portal_owner.equals("")){
throw new ServletException("Error retrieving nsp_portal_owner from deployment descriptor. - nsp_portal_owner is null or an empty string");
//get the iladmin_owner from the deployment descriptor
iladmin_owner = (String)getServletContext().getInitParameter("iladmin_owner");
//ensure a value is present
if(iladmin_owner==null||iladmin_owner.equals("")){
throw new ServletException("Error retrieving iladmin_owner from deployment descriptor. - iladmin_owner is null or an empty string");
//get the ilprod_db_host from the deployment descriptor
ilprod_db_host = (String)getServletContext().getInitParameter("ilprod_db_host");
//ensure a value is present
if(ilprod_db_host==null||ilprod_db_host.equals("")){
throw new ServletException("Error retrieving ilprod_db_host from deployment descriptor. - ilprod_db_host is null or an empty string");
//get the ilprod_db_port from the deployment descriptor
ilprod_db_port = (String)getServletContext().getInitParameter("ilprod_db_port");
//ensure a value is present
if(ilprod_db_port==null||ilprod_db_port.equals("")){
throw new ServletException("Error retrieving ilprod_db_port from deployment descriptor. - ilprod_db_port is null or an empty string");
//get the ilprod_db_service from the deployment descriptor
ilprod_db_service = (String)getServletContext().getInitParameter("ilprod_db_service");
//ensure a value is present
if(ilprod_db_service==null||ilprod_db_service.equals("")){
throw new ServletException("Error retrieving ilprod_db_service from deployment descriptor. - ilprod_db_service is null or an empty string");
%>
<html>
<head>
<title>lookup</title>
</head>
<body>
<jsp:useBean id="lookup" class="utils.LookupBean">
<jsp:setProperty name="lookup" property="ilprod_db_user" value="<%=ilprod_db_user%>"/>
<jsp:setProperty name="lookup" property="ilprod_db_pass" value="<%=ilprod_db_pass%>"/>
<jsp:setProperty name="lookup" property="tedsi_prod_owner" value="<%=tedsi_prod_owner%>"/>
<jsp:setProperty name="lookup" property="nsp_portal_owner" value="<%=nsp_portal_owner%>"/>
<jsp:setProperty name="lookup" property="iladmin_owner" value="<%=iladmin_owner%>"/>
<jsp:setProperty name="lookup" property="ilprod_db_host" value="<%=ilprod_db_host%>"/>
<jsp:setProperty name="lookup" property="ilprod_db_port" value="<%=ilprod_db_port%>"/>
<jsp:setProperty name="lookup" property="ilprod_db_service" value="<%=ilprod_db_service%>"/>
<%
//open db conn
lookup.openIlprod();
ResultSet roem = lookup.getOEMDropdown();
ResultSet rstat = lookup.getStatusDropdown();
if(roem!=null){
%>
OEM:��
<select name="OEM">
<%
while(roem.next()){
%>
<option value="<%=roem.getString("id")%>"><%=roem.getString("name")%></option>
<%
%>
</select><br><br>
<%
else{
out.println("OEM: no records<br><br>");
//******* IF I PUT ResultSet IN FRONT OF rstat HERE IT WORKS FINE?
rstat = lookup.getStatusDropdown();
if(rstat!=null){
%>
Status:��
<select name="status">
<%
while(rstat.next()){
%>
<option value="<%=rstat.getString("id")%>"><%=rstat.getString("description")%></option>
<%
%>
</select><br><br>
<%
else{
out.println("Status: no records<br><br>");
//close db conn
lookup.closeIlprod();
%>
</jsp:useBean>
</body>
</html>
<%
catch(Exception e){
//set request attributes to pass to error page
request.setAttribute("javax.servlet.error.exception",e);
request.setAttribute("javax.servlet.error.message",e.getMessage());
request.setAttribute("javax.servlet.error.request_uri", request.getRequestURI());
request.setAttribute("javax.servlet.error.servlet_name", request.getServletPath());
//log to Tomcat
application.log(" Message: "+e.getMessage()+'\r'+'\n'+"RequestURI: "+request.getRequestURI()+'\r'+'\n'+"Servlet Path: "+request.getServletPath(),e);
//forward to the error page
RequestDispatcher rd = request.getRequestDispatcher("error.jsp");
rd.forward(request,response);
//out.println(e.getMessage());
%> -
Repost-Best way of using connection pooling
I am reposting this, seems best suitable in this category.
I am using Eclipse 3.1 along with Tomcat 5.0, MySQL 4.1, J2EE1.4. I could set up the JNDI Dataresource connection pooling and tested with small test servlet. Now thinking of having common methods for getting connection / closing / commiting ....etc.
I wrote following. [Please let me know whether it is correct way of doing it - as i am not very sure]
package common;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import org.apache.log4j.Logger;
public final class connectionManager {
private static Logger logger = Logger.getLogger(common.connectionManager.class);
public connectionManager() {}
public static Connection getConn () throws NamingException, SQLException
//JNDI DataSource connection pooling
Connection conn = null;
try{
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/TQ3DB");
conn = ds.getConnection();
}catch (NamingException ne) {
new GlobalExceptionHandler(logger, ne);
conn = null;
throw new NamingException();
}catch (SQLException e){
new GlobalExceptionHandler(logger, e);
conn = null;
throw new SQLException();
return conn;
}//getConnection
public static void commit(Connection conn) throws SQLException
conn.commit();
public static void rollback(Connection conn) throws SQLException
conn.rollback();
public static void setAutoCommit(Connection conn, boolean autoCommit)
throws SQLException
conn.setAutoCommit(autoCommit );
public static void closeConnection(Connection conn) throws SQLException{
if (conn != null) {
conn.close();
conn = null;
}//closeConnection
public static void closeResources(ResultSet oRS, PreparedStatement pstmt) throws SQLException
if (oRS != null) {
oRS.close();
oRS = null;
if (pstmt != null) {
pstmt.close();
pstmt = null;
} // closeResources
}//ConnectionManager
I am having a login form which submits user name and password. I am checking this against the database. Following is the servlet to do that.
package login;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import common.*;
public class loginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}//doGet
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{
String userId = request.getParameter("userId");
String password = request.getParameter("password");
** call a method to validate the password which will return the
** User Name for authorized users and null string for un-authorised.
String uName = validateUser(userId, password);
//if uName is null .. user is not authorized.
if (uName == null){
//redirect to jsp page with error message
RequestDispatcher rd =
getServletContext().getRequestDispatcher("/jsps/mainmenu.jsp");
if (rd != null){
rd.forward(request,response);
else{
// the user is valid - create a seesion for this user.
HttpSession userSession = request.getSession(true);
// put the user name session variable.
userSession.setAttribute("userName", uName);
//redirect to Main menu page
RequestDispatcher rd =
getServletContext().getRequestDispatcher("/jsps/mainmenu.jsp");
if (rd != null){
rd.forward(request,response);
}// end of doPost
private String validateUser(String userId, String password)
throws SQLException{
String returnVal = null;
connectionManager cm = new connectionManager();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet oRS = null;
try{
//get the connection
conn = cm.getConn ();
//get records from user table for this user id and password
String sQry = "SELECT user_login FROM user "
+ "where user_login = ? AND user_pwd = ? ";
pstmt = conn.prepareStatement(sQry);
pstmt.setString(1, userId);
pstmt.setString(2, password);
oRS = pstmt.executeQuery();
//check for record
if (oRS.next()) {
returnVal = oRS.getString("user_login");
}else {returnVal = null;}
}catch (Exception e){
returnVal = null;
}finally{
cm.closeResources(oRS, pstmt);
cm.closeConnection(conn);
return returnVal;
}// end of servlet class
But i am unable to compile it and i am also getting lots of warnings.
I am getting error at line
1)String uName = validateUser(userId, password);
Unhandled exception type SQLException loginServlet.java TQ3/WEB-INF/src/login line
Following warnings:
2)For loginServlet Declaration
The serializable class DBTest does not declare a static final serialVersionUID field of type long loginServlet.java
3)The static method getConn() from the type connectionManager should be accessed in a static way
4)The static method closeResources(ResultSet, PreparedStatement) from the type connectionManager should be accessed in a static way
5)The static method closeConnection(Connection) from the type connectionManager should be accessed in a static way
Definitely I am doing it wrong but exactly where? I am having very strong doubt the way i am using connections is not the correct way. Pls help me.
regards
ManishaI am in a search of best way to use connection pooling. Initially was using simple JDBC call, then modified to JNDI, afterwards tried to have common class. Later came accross the idea of Singleton/Static. I wanted to have a common class which will handle all connection related issues and at the same time give good performance.
With due respect to all Java Gurus: i got all from web articles/tutorials/java forum etc. There is a long discussion regarding Singlet vs static in this forum. But finally got confused and could not figure out in my case which method shall i make use of, so tried both.
What I want is somebody pointing out flwas inside my 2 code snippets and guide me about which method shall i adopt in future.
Static way:
package common;
import java.sql.Connection;
import javax.sql.DataSource;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public final class ConnectionManager_Static {
private static InitialContext ctx = null;
private static DataSource ds = null;
public ConnectionManager_Static(){ }
//as the staic method is updating static var i am synchonizing it
private static synchronized void getDatasource () throws NamingException, SQLException
if (ds == null){
ctx = new InitialContext();
ds = (DataSource)ctx.lookup("java:comp/env/jdbc/MySql");
//making getConnection() also static as it is not instance specific
public static Connection getConnection () throws NamingException, SQLException, Exception
Connection conn = null;
try{
if (ds == null) {getDatasource ();}
if (ds != null) {
conn = ds.getConnection();
}catch (Exception e){
throw new Exception("From ConnectionManager_Static",e);
return conn;
}//getConnection
}Singleton:
package common;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public final class ConnectionManager_Singleton {
private static ConnectionManager_Singleton INSTANCE = null;
private DataSource datasource = null;
// Private constructor for singleton pattern
private ConnectionManager_Singleton() throws NamingException{
Context ctx = new InitialContext();
datasource = (DataSource)ctx.lookup("java:comp/env/jdbc/MySql");
//synchronized creator for multi-threading issues
//another if check to avoid multiple instantiation
private synchronized static void createInstance() throws NamingException{
if (INSTANCE == null) {
INSTANCE = new ConnectionManager_Singleton();
public static ConnectionManager_Singleton getInstance() throws NamingException {
if (INSTANCE == null) createInstance();
return INSTANCE;
public Connection getConnection() throws Exception
Connection con = null;
try{
con = datasource.getConnection();
}catch(Exception e){
throw new Exception("From connection manager singleton ", e);
return con;
}Sorry, It's becoming long.
Thanaks in advance,
Manisha -
Help a new guys with JSP!
Hi,
i'm a new programer with JSP.
I've created a class files that connect a database.
But i would like to know how to write text with JSP?
I would like to write a 'thank you' message after saving a form in a database.
does its possible to have it in my class files?
thanks for your help.Im not an expert on jsp or java but i will try to give my ideas.. i hope i can help you =)
/* you could actually forward your servlet to your confirmation file like this : */
ServletContext sc = getServletContext();
.// just fill up here the variable msg , u cud write to its value your thank you message or something else like error messages
RequestDispatcher rd = sc.getRequestDispatcher("/Confirmation.jsp?msg="+msg);
rd.forward(req, res);
/******* or u cud also throw ur request to the same jsp and display the ***/
/******* message thru a form tag using javascript like this : ***/
suppose your main jsp is this:
<html>
<head>
<STYLE TYPE="text/css">
.noBorder{
border: white 0px solid;
background-color: white;
font-family:Arial;
font-size:13px;
font-weight: bold;
color:green;
width:300px;
text-align:center;
</STYLE>
</head>
<%!
Connection conn;
PreparedStatement pstmt;
private doInsert(String name){
// this is an oracle connection
String sql = "INSERT INTO TABLENAME(FIELD1) VALUES(?)"
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
// just fill up the dburl , dnusername and dbpassword
conn = DriverManager.getConnection(dburl,dbusername,dbpassword);
pstmt = conn.prepareStatement(sql);
pstmt.clearParameters(); // clear any previous parameter values
pstmt.setString(1,name);
pstmt.close();
}catch(SQLException se){
}catch(Exception e){
}finally{
if(conn!=null){
try{
conn.close();
}catch(SQLException se){}
%>
<body>
<form method=post"" name="msgscr">
<tr><td colspan="2"><input type="text" name="msg" value="" class="noBorder" disabled/></td></tr>
</form>
<%
if(request.getParamater("submit")!=null){
// you could also add a return value for doInsert method to check whether the dbase insertion
// is successful or not if the return value is true then the value for the document.msgscr.msg.value
// is thank you otherwise u cud put "Unable to process your request" or other message
doInsert(request.getParameter("name"));
out.println("<script>document.msgscr.msg.value='Thanks you!!!!';</script>")
%>
<!-- this means that the request qill be thrown on this file-->
<form method="post">
<tr>
<td>NAme : </td>
<td><input type="text" name="name" value=""/></td>
</tr>
<tr><td colspan="2" align="center"><input type="submit" name="submit " value="Submit"></td></tr>
</form>
</body>
</html>
/**** or you could also do the confirmation message just by adding an **/
/**** alert message using javascript like this: **/
<head>
<script language="javascript">
function ValidateCreate(theform){
if(theform.name.value==""){
alert("name is required");
return false;
}else{
alert("Thank you!!!!");
return true;
</script>
</head>
<body>
<form method="post" onsubmit="return ValidateCreate(this)">
<tr>
<td>NAme : </td>
<td><input type="text" name="name" value=""/></td>
</tr>
<tr><td colspan="2" align="center"><input type="submit" name="submit " value="Submit"></td></tr>
</form> -
Apache-zip.jar name attachment file bad encoding
I have following code. which create zip archive, but name attachment files bad encoding.
name attachment files in encoding UTF-8. letters of Russian alphabet -"имя.txt". get - "¯à¨ï⨥ àï¤ .txt" OS - Ubuntu 9.10 64-b
package action;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
import java.io.*;
import java.util.Arrays;
import java.util.List;
public class CreateArchive {
private byte[] getByteFromFile(String file) throws IOException {
InputStream is = new FileInputStream(file);
long length = file.length();
if (length > Integer.MAX_VALUE) {
throw new IOException("Size file bad: "+file);
byte[] bytes = new byte[(int)length];
int offset = 0;
int numRead;
while (offset < bytes.length && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
if (offset < bytes.length) {
throw new IOException("Could not completely read file "+file);
is.close();
return bytes;
public void createZip(OutputStream outputStream, List<String> files) {
byte[] buf = new byte[1024];
try {
ZipOutputStream out = new ZipOutputStream(outputStream);
out.setEncoding("UTF-8");
for (String fileName: files) {
ByteArrayInputStream sourceStream = new ByteArrayInputStream(getByteFromFile(fileName));
out.putNextEntry(new ZipEntry(fileName));
int len;
while ((len = sourceStream.read(buf)) != -1) {
out.write(buf, 0, len);
out.closeEntry();
out.close();
} catch (IOException e) {
System.out.print(e);
public static void main(String[] args) throws IOException {
CreateArchive files = new CreateArchive();
OutputStream outputStream = new FileOutputStream("file.zip");
files.createZip(outputStream, Arrays.asList("имя.txt"));
outputStream.close();
}Sorry for me bad english
Edited by: P1tBull on Mar 24, 2010 5:35 AMReal task was create general archive is selected users files and transmission he in one stream
package action;
import org.apache.tools.zip.ZipEntry;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.Arrays;
import java.util.List;
import java.util.zip.ZipOutputStream;
public class StreamFiles extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
OutputStream out = response.getOutputStream();
try {
response.setContentType("'application/zip'; charset='UTF-8'");
response.setContentType("name=AllFile");
response.setHeader("Content-disposition", "attachment; filename*=utf-8" + "''" + java.net.URLEncoder.encode("AllFile.zip", "UTF-8") + ";");
if (request.getHeader("user-agent") != null) {
if (request.getHeader("user-agent").indexOf("Safari") != -1) {
response.setHeader("Content-Disposition", "attachment");
response.setContentType("application/octet-stream");
} else if (request.getHeader("user-agent").indexOf("MSIE") != -1 || request.getHeader("user-agent").indexOf("Chrome") != -1) {
response.setHeader("Content-disposition", "attachment; filename=" + java.net.URLEncoder.encode("AllFile.zip", "UTF-8"));
List<String> files = Arrays.asList("catalina.bat", "startup.sh", "version.sh", "tomcat-juli.jar");
createZip(out, files);
} catch (Exception ex) {
request.setAttribute("javax.servlet.jsp.jspException", ex);
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/error.jsp");
requestDispatcher.forward(request, response);
} finally {
out.flush();
out.close();
private byte[] getByteFromFile(String file) throws IOException {
InputStream is = new FileInputStream(file);
long length = file.length();
if (length > Integer.MAX_VALUE) {
byte[] bytes = new byte[(int)length];
int offset = 0;
int numRead;
while (offset < bytes.length && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
if (offset < bytes.length) {
throw new IOException("Could not completely read file "+file);
is.close();
return bytes;
public void createZip(OutputStream outputStream, List<String> files) {
byte[] buf = new byte[1024];
try {
ZipOutputStream out = new ZipOutputStream(outputStream);
for (String fileName: files) {
ByteArrayInputStream sourceStream = new ByteArrayInputStream(getByteFromFile(fileName));
out.putNextEntry(new ZipEntry(fileName));
int len;
while ((len = sourceStream.read(buf)) != -1) {
out.write(buf, 0, len);
out.closeEntry();
out.close();
} catch (IOException e) {
System.out.print(e);
}but mistake on real host don't repeated, so thanks for answer
Edited by: P1tBull on Mar 24, 2010 8:14 AM -
Dev_jrfc.trc (filesystemfull)
Hi,
on my J2ee instance are thrown hundreds of dev_jrfc.trc.
does anybody know the reason why??
KR
Wolfgang
Error thrown [Tue May 06 12:03:37,429]:Error in RequestDispatcher.DispatcherWorker.run()
java.lang.UnsatisfiedLinkError: nativeSAP_CMLISTEN
at com.sap.mw.rfc.driver.CpicDriver.nativeSAP_CMLISTEN(Native Method)
at com.sap.mw.rfc.driver.CpicDriver.SAP_CMLISTEN(CpicDriver.java:1131)
at com.sap.mw.rfc.driver.RfcTypeRegisterCpic.waitForRequest(RfcTypeRegisterCpic.java:593)
at com.sap.mw.rfc.api.RfcApi.RfcWaitForCpicRequest(RfcApi.java:1261)
at com.sap.mw.jco.MiddlewareJRfc.waitForRequest(MiddlewareJRfc.java:580)
at com.sap.mw.jco.RequestDispatcher$DispatcherWorker.run(RequestDispatcher.java:159)
at java.lang.Thread.run(Thread.java:534)
Error thrown [Tue May 06 12:03:37,430]:Error in RequestDispatcher.DispatcherWorker.run()
java.lang.UnsatisfiedLinkError: nativeSAP_CMLISTEN
at com.sap.mw.rfc.driver.CpicDriver.nativeSAP_CMLISTEN(Native Method)
at com.sap.mw.rfc.driver.CpicDriver.SAP_CMLISTEN(CpicDriver.java:1131)
at com.sap.mw.rfc.driver.RfcTypeRegisterCpic.waitForRequest(RfcTypeRegisterCpic.java:593)
at com.sap.mw.rfc.api.RfcApi.RfcWaitForCpicRequest(RfcApi.java:1261)
at com.sap.mw.jco.MiddlewareJRfc.waitForRequest(MiddlewareJRfc.java:580)
at com.sap.mw.jco.RequestDispatcher$DispatcherWorker.run(RequestDispatcher.java:159)
at java.lang.Thread.run(Thread.java:534)SP,
Try to Switch off JRFC trace and restart the server.
name
jrfc*.trc
location
directory j2ee/cluster/server* or defined path
how to switch on and off
set JVM options for the server via the Config Tool and restart server:
-Djrfc.trace=0/1,
-Djco.trace_path=[defined_path]
Look at the below sap note for more details: 875386
Regards,
Karthick Eswaran -
Error While using RequestDispatcher.forward
Hi All,
I am getting an error while i am forwarding a request from a controller servlet to a JSP in WAS 3.5.
i am using the following code:
String url = "../gede/globalservices/SCSLogin.jsp";
RequestDispatcher rd = getServletConfig().getServletContext().getRequestDispatcher(url);
rd.forward(request, response);
The error i get is :
Error 404
An error has occured while processing request:http://teamsite-cwc-review.indsys.ge.com/cwc/servlet/com.geindsys.gede.globalservices.SCSControllerServlet
Message: [JSP 1.0 Processor] reported an error
i was able to get the same while using response.SendRedirect(url);
Please help..
Thanks in Advance..
Regards,
Ravi.Looks like your JSP is throwing an exception. Check the logs in your server to find the details about it. (Was there an XML question here? I couldn't see one.)
-
Error While using RequestDispatcher.forward --URGENT!!!
Hi All,
I am getting an error while i am forwarding a request from a controller servlet to a JSP in WAS 3.5.
i am using the following code:
String url = "../gede/globalservices/SCSLogin.jsp";
RequestDispatcher rd = getServletConfig().getServletContext().getRequestDispatcher(url);
rd.forward(request, response);
The error i get is :
Error 404
An error has occured while processing request:http://teamsite-cwc-review.indsys.ge.com/cwc/servlet/com.geindsys.gede.globalservices.SCSControllerServlet
Message: [JSP 1.0 Processor] reported an error
i was able to get the same while using response.SendRedirect(url);
Please help..
Thanks in Advance..
Regards,
Ravi.I think the problem is in the ".." part of your url.
If you have a webapp named cwc in the webapps/cwc directory and in this webapp in there is a file SCSLogin.jsp under webapps/cwc/gede/globalservices you should use a URL:
String url = "/gede/globalservices/SCSLogin.jsp"; -
hi
while using the the forward method in RequestDispatcher, i encounter the error below. it is complaining that it cant find the method "RequestDispatcherImpl.forward".
as my machine has a few different JDKs, is there the possiblity of it using the wrong one? i have set my JAVA_HOME to JDK1.2.2 though.
i have checked that my classpaths are set correctly as well.
any help is much appreciated.
thanx
yunyee
********* Error Log **********
Mon Nov 27 17:41:28 GMT+08:00 2000:<E> <ServletContext-General> Servlet failed with Exception
java.lang.NoSuchMethodError
at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:95)
Hello,
I suppose u should first download the j2eesdk1.2.2 , or simply download the jsdk (Java Servlet Development Kit) from developer connection in java.sun.com.
In fact, your library for servlet may just support Servlets spec. 2.1, which does not contain the imple. of RequestDispatcher.
Anthony
yunyee wrote:
> hi
>
> while using the the forward method in RequestDispatcher, i encounter the error below. it is complaining that it cant find the method "RequestDispatcherImpl.forward".
>
> as my machine has a few different JDKs, is there the possiblity of it using the wrong one? i have set my JAVA_HOME to JDK1.2.2 though.
> i have checked that my classpaths are set correctly as well.
>
> any help is much appreciated.
> thanx
>
> yunyee
>
> ********* Error Log **********
> Mon Nov 27 17:41:28 GMT+08:00 2000:<E> <ServletContext-General> Servlet failed with Exception
> java.lang.NoSuchMethodError
> at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:95)
Click here for Free Video!!
http://www.gohip.com/free_video/
[ctlai.vcf]
Maybe you are looking for
-
How to define my startup class in an .ear package?
I am using WL6.0SP2 on solaris. I plan to package my application as an .ear file and to put all necesarry class files in there (it will has one .war file for the web tier and one .jar file for the EJBs). I want, when Weblogic loads my .ear file (i.e.
-
Region is not created and also the item is not added.. Help me
Hi to all, I want to create a region dynamically(in the sense using code). The following code is used but the thing is the region is not created and the item also not created. Using the object of the item, i set the prompt , this is also not working.
-
When is the icloud coming to austria?? thank you.
-
Hi team, Here iam applying Support package SAPKB70014. I have applied the support packages from SAPKB70007 to sapkb70011. but when iam applyin the support package SAPKB70014, it gives me an information saying that " SAPKB70014 REQUIRES KERNEL RELEASE
-
Idoc not created for a particular sales order
Hi, For a particular sales order , idoc is not created . The idoc has to be generated when we create a sales order , but for a particular sales order , the idoc is not generated when the sales order is created. The program is assigned in nace for