Connecting servlet and business logic
Hi everybody,
in a server-client like architecture im using a servlet for communication with clients over http (not for creating web pages etc).
i wrote a parser class to get messages from servlet, parse them, and perform necessary actions.
According to the message content, parser must call methods from another java application running on the same machine.
The problem is how it can do that. If only static methods were called, it would be okey, but simply i have to reach the other application from the servlet, and i want to have them decoupled as much as possible.
any suggestions?
I'm trying to make a sense of what you're trying to do. You have an already existing application with already existing objs, and you're trying to make a servlet communicate with that application ?
Now, what kind of app is it ? You can instantiate any class from a servlet through a business delegate, as long as the servlet container can find the classes or the jar files (in WEB-INF/classes,WEB-INF/lib or the server's global lib directory). I think you're telling me that you can't do that for some reason(s), and that backend app has already instantiated the objs you need ?
Can you edit that backend app and add a layer that serializes these famous objs you need into .ser files ?
The servlet would then just deserialize those objs, and use them in the parser. Of course, those objs would need to be serializable, and the servlet would still need to be able to access the objs class or jar files.
There are of course other ways to communicate : XML, JNDI, etc...
If you need to start that app from the servlet on the same machine, take a look at the java RunTime and the exec() method call.
If the above does not help, I'm afraid you'll have to make your problem even clearer...
Similar Messages
-
Bean containing both UI components and business logic
Hello ADF design experts, please guide me. I came across a critical design aspects. I have main page having bunch of UI components, Region 1, Region 2. I will have to bind the UI components of the page to a managed bean having session scope and the reason is, when control goes to region 1 or region 2, I will be doing lot of processing of business logic and then based on this, I will have to update the UI components of the page. Same thing with region 2 also. And then, I should be able to access the information across regions and also across other UI components etc.
I am seeing only session scoped bean will be able to help me here to get my tasks done across regions and across all other UI components of the page because I am not in a position to pass too many parameters across regions. Now the problem is, I can not serialize this bean because as I mentioned lot of UI components are updated based on logic.
If I do not serialize the bean, I may have problem in future when application has to be deployed to cluster envt.
I do not know how should I go with my design now. Please provide me brilliant ideas and very thankful to your guidance.
thanksHi ADF,
I dont want to disturb the discussion with you and Alej. I'm rising some question from your first post.
I have main page having bunch of UI components,
ok fine.
Region 1, Region 2. I will have to bind the UI components of the page to a managed bean having session scope
1.why need to do this binding for all ui components .?
2.this question lead ask another question are you using ADFBc.? if so binding layer will take care why you bind all those things.
3.why you need to put session scope.?
if you are using region. the region can only be bounded TF right, then communicate with help of pageflow. inside the bounded you may have jsff/jspx,
reason is, when control goes to region 1 or region 2, I will be doing lot of processing of business logic and then based on this, I will have to update the UI components of the page. Same thing with region 2 also.
from the reason i have question? why you need to communicate between two region instead of using Taskflow communication.
And then, I should be able to access the information across regions and also across other UI components etc.
ok fine.
I am seeing only session scoped bean will be able to help me here to get my tasks done across regions and across all other UI components of the page because I am not in a position to pass too many parameters across regions. Now the problem is, I can not serialize this bean because as I mentioned lot of UI components are updated based on logic.
from my point of view. your are using all powerful feature session bean, region communication to do your requirement.
mixing all those things so only you can't able to get consistent results.
I do not know how should I go with my design now.
could you please explain your usecase.
Please provide me brilliant ideas and very thankful to your guidance.
yeah sure. people will do.
thanks -
Expert's advise: share EJB components and business logic
Hi all,
I've a J2EE applicacion and I want to know if is posible share my ejb business logic with other components in other enviroments and differents programming languages.
for example, I show you my scenario...
I've a J2EE application that will be run in a WebSphere server (running over windows) for my JSP cliente side(you know... the web browser), all is ok!!! but my application need also receive request from remote clients (components from other business applications) that may be compiled in .net (over windows) or c++ (over AS400 or linux) and send the response to the respective client.
well...
my question is if is posible, which can be the protocols or java technologies that i will need to use for implements some like this.
thanks for your answer...Web services is one possibility.
-
Urgent problem in connecting servlet and oracle
Hi
I have problem in connecting servlet with oracle.Kindly let me know what all the classes i should include in classpath to get connected.Where will i find the oracle driver.Kindly help me to do this.
With regrds
Vaijuhttp://www.oracle.com/technology/tech/java/sqlj_jdbc/htdocs/jdbc_faq.html
http://www.oracle.com/technology/sample_code/tech/java/sqlj_jdbc/index.html
http://download-west.oracle.com/docs/cd/B10501_01/java.920/a96654/toc.htm
http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
http://www.oracle.com/technology/sample_code/tech/java/codesnippet/jdbc/index.html -
Best Practice: Keeping business logic out of the servlet
In servlet programming, is it considered best practice keep business logic in the helper classes and only have session-related logic in the servlet?
Yes, it is best to keep your business logic separate from your servlet class, to prevent coupling between your servlet and business logic. Consider using EJB's or the DAO pattern for your business logic.
-
Difference between impelementation rules and business logc.
Hi all,
Please tell me what is the exact difference between implementation rules and business logic?And more importantly when and where they should be used?
Thanks in advance.
Regards,
Jayant GuptaHi vasu,
from the point of view of possible transformation there are not differences.
The great difference is the following:
In Update Rules routines are defined for a single field for every key filed: for example you define the single routine for 0AMOUNT for every single Characteristic that define the key (0COSTCENTER - 0COSTELEMENT - ...). For every single DataField you can define a different routine also in terms of Key fields.
In transfer roules every routine is for every field without any kind of relation to the other fields.
Check also this doc:
<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/dc43c445-0d01-0010-23a1-ca348ff5f975">https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/dc43c445-0d01-0010-23a1-ca348ff5f975</a>
Ciao.
Riccardo.
Message was edited by: Riccardo Venturini -
Transformation vs business logic
can anyone please tell me the difference between a transformation and business logic in the context of a Data Warehouse? do these terms mean the same thing?
thanks for the help.thanks Josh, i was thinkning that even in stored procedures, we perfrom some sort of transformations(joins, filtering etc). i've been doing researh and couldn't find an example of a business logic which isn't called "transformation"
Well sure, and that's another sort of fuzziness. A relational database exists exactly so you can do various kinds of algebraic manipulations as needed, it's not just to persist data without also including those manipulations. And even the
simplest select is a manipulation of a kind. But "transformation"? If the select returns the columns as stored, I think that's not transformed. Even a join to multiply or divide the result set and return a combined row I think would be allowed
under relational algebra and not considered a "transformation".
But as soon as you combine fields in any way, I guess you've cross the border into transformation.
When you look closely, there's very little about relational technology that's all as cut and dried as some might think!
Josh -
Gathering Technical and Business Requirements for SAP PI
I need to some documents and tools, or interview guide & questionnaire to gather the stakeholders' technical and business requirements for SAP PI
Thanks for the links,
I am quite new at SAP and currently trying to elaborate should i use SAP PI or not based on my project stakeholder's requirements.
And my biggest problem right now is how to capture technology and business requirements and match them with SAP PI
I plan to use this format while requirements gathering about integration platform:
1- Draft Requirements
Q- What is the names and status of sending and receiving application and how they will be used
2- Detailed Requirements
Q- Connectivity, Administrative and Business related questins
3- Administrative and project management information
Q- Which applications are involved, who is the original supplier? Who is technical contact at the supplier
4- Business requirements
Q- Questions about the information flow which will support some business processes
5- Connectivity to applications
Q- Questions about connectivity mechanism, file formats (flat file or XML or something else), data access methods and so on
What do you think about the general concept?
Edited by: Alper Celik on Feb 2, 2009 10:37 AM -
Java for business logic and CFMX for GUI?
For those familiar with ColdFusion MX, does it make since to use Java at the business logic and possibly data tier and have CF handle the GUI?
What are the advantages/disadvantaes (methology, threading, memory use, performance, etc)?
Thanks,
BrettI can't think of any advantages to doing this except that you won't have to listen to people whine about learning something new. Go with Java Server Pages and Servlets to split this functionality. Once you get over the learning curve, you will be much happier.
-
Logical system and business system
Hi experts, please help me with the below questions---
1) What is the diff between logical system and business system?
2)what is the difference between logical system(defined in R/3) and business system (defined in SLD) in idoc to file scenario.
3) Is it require to give the logical system name of the xi server(Which we define in idx1 port) to the 3rd party system(Application system at the FTP side) to carry out file to idoc scerario?Hi,
Business System :
1. Business systems are logical systems, which function as senders or receivers within XI. Business systems can be SAP systems or third-party systems. Depending on the associated technical system.
2. Business Systems should be mandatory used when dealing with Idoc's and Proxies .
Business Service:
1. Business Service requires manual adding on Inbound and Outbound Interfaces, Business Systems do not.
2. Business Services are maintained across environments and so, their names cannot be changed. Business Systems names can be changed across environments by providing SLD level transport targets.
3.In the Business Services we cannot maintain the Group and Targets in SLD. For Ease in transporting your ID/Configuration objects Groups and Targets are used in SLD for Business Systems.
4.Business Service has no SLD Entries and No Assigned Products and SWCV's
Regards
Sangeetha -
Using database connection in a servlet and get errors after 8 hours
Hey,
I'm running a poker script using applet/servlets and it works great. But for some reason about about 8 hours that database layer stops working. At first I thought it was the connections to mySQL that were timing out (because im using connection pooling) but after turning pooling off (I now create the connection each time) I'm still seeing that same error (I can create a connection but when I do an action ex. like a select statment I get an error). What i'm wondering could it be that the driver I load with Class.forName() some how unloads it's self after x amount of time not being used? Not sure if that is it but if anyone could give me some insight that would be great. The Error i recieve is below:
INFO: Database Event:DatabaseController: Error executing database query.
ERROR: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Software caused connection abort: recv failed
STACKTRACE:
java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:104)
at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:144)
at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:172)
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1839)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2288)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2784)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1531)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1622)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2370)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2297)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:1183)
at com.softnet.database.DatabaseController.executeDatabaseQuery(DatabaseController.java:190)
at com.softnet.games.GameServer.validateUser(GameServer.java:438)
at com.softnet.games.GameServer.handleData(GameServer.java:113)
at com.softnet.network.HttpConnectionThread.run(HttpServletListener.java:191)
** END NESTED EXCEPTION **
I know the query is good because it works all other times just not after about 8 hours.
--Z3r0CooLHey,
Thanks for the responces. For the connection pooling I would open 5 connections and keep them open. So i though maybe after 8 hours after not being used they would timeout. Thats why i turned off conection pooling and create a new connection each time. Anyways i'll post the code below incase i made a mistake somewhere.
package com.softnet.database;
/************************ DatabaseControler **************************/
import java.sql.*;
import java.util.*;
import com.softnet.database.DatabaseConnectionPool;
import com.softnet.database.DatabaseSettings;
public class DatabaseController
implements DatabaseListener
//Used to make sure the database driver is loaded
private boolean databaseDriverState = false;
//Used to store a database connection
private Connection databaseConnection = null;
//If to user connection pooling or not
private boolean useConnectionPooling = false;
//Used to hold the connection pool varible
private DatabaseConnectionPool connectionPool = null;
//Used to store database settings
private DatabaseSettings databaseSettings;
//Used to hold the DatabaseController listeners
private List databaseControllerListeners = new ArrayList();
//min number of connections for connection pool
private int minNumberOfConnections = 1;
//max number of connections for connection pool -1 is unlimited
private int maxNumberOfConnections = -1;
//DatabaseController Constructors
public DatabaseController(DatabaseSettings databaseSettings)
this.databaseSettings = databaseSettings;
databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
public DatabaseController(DatabaseSettings databaseSettings, boolean useConnectionPooling, int minNumberOfConnections, int maxNumberOfConnections)
this.databaseSettings = databaseSettings;
this.useConnectionPooling = useConnectionPooling;
this.minNumberOfConnections = minNumberOfConnections;
this.maxNumberOfConnections = maxNumberOfConnections;
if(useConnectionPooling == true)
connectionPool = new DatabaseConnectionPool(databaseSettings, minNumberOfConnections, maxNumberOfConnections);
connectionPool.addDatabaseListener(this);
else
databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
public DatabaseController() {}
//Database Settings Get/Set
public DatabaseSettings getDatabaseSettings()
return databaseSettings;
public void setDatabaseSettings(DatabaseSettings databaseSettings)
this.databaseSettings = databaseSettings;
//Connection Pooling Get/Set
public boolean getConnectionPooling()
return useConnectionPooling;
public void setConnectionPooling(boolean useConnectionPooling, int minNumberOfConnections, int maxNumberOfConnections)
this.useConnectionPooling = useConnectionPooling;
this.minNumberOfConnections = minNumberOfConnections;
this.maxNumberOfConnections = maxNumberOfConnections;
if(useConnectionPooling == true)
if(connectionPool == null)
connectionPool = new DatabaseConnectionPool(databaseSettings, minNumberOfConnections, maxNumberOfConnections);
connectionPool.addDatabaseListener(this);
else
if(connectionPool != null)
connectionPool.destroyConnections();
connectionPool.removeDatabaseListener(this);
connectionPool = null;
//Return if there connected
public boolean isConnected()
boolean isConnected;
if(databaseConnection != null)
isConnected = true;
else
isConnected = false;
return isConnected;
//Used to connect to database or get a connection for the connection pool
public void connect()
if(databaseDriverState == false)
databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
//If we dont have a current connection, make one
if(databaseConnection == null && databaseDriverState == true)
if(useConnectionPooling == false)
try
databaseConnection = DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword());
catch (SQLException sqle)
//Raise event
raiseDatabaseEvent("DatabaseController: Error connecting to database. \nERROR: " + sqle.getMessage());
databaseConnection = null;
else
databaseConnection = connectionPool.getConnection();
//Used to disconnect from the database or give back the connection to the connection pool
public void disconnect()
if(databaseConnection != null)
if(useConnectionPooling == false)
try
//Close DB Connection
databaseConnection.close();
catch(SQLException ignore) {}
finally
databaseConnection = null;
else
connectionPool.returnConnection(databaseConnection);
databaseConnection = null;
public ResultSet executeDatabaseQuery(String sSQL)
ResultSet databaseResult = null;
if(databaseConnection != null)
try
Statement databaseStatement = databaseConnection.createStatement();
databaseResult = databaseStatement.executeQuery(sSQL);
catch(SQLException sqle)
//Raise event
raiseDatabaseEvent("DatabaseController: Error executing database query.\nSQL: " + sSQL + "\nERROR: " + sqle.getMessage());
return databaseResult;
public int executeDatabaseUpdate(String sSQL)
int rowsAffected = -1;
if(databaseConnection != null)
try
Statement databaseStatement = databaseConnection.createStatement();
rowsAffected = databaseStatement.executeUpdate(sSQL);
catch(SQLException sqle)
//Raise event
raiseDatabaseEvent("DatabaseController: Error executing database update.\nSQL: " + sSQL + "\nERROR: " + sqle.getMessage());
return rowsAffected;
//Used to load the Database Driver
private boolean loadDatabaseDriver(String databaseDriver)
boolean driverLoaded;
if(databaseDriver.equals("") == false)
try
//Load Database Driver
Class.forName(databaseDriver).newInstance();
driverLoaded = true;
catch (Exception e)
//Raise event
raiseDatabaseEvent("DatabaseController: Error loading database driver. \nERROR: " + e.getMessage());
driverLoaded = false;
else
driverLoaded = false;
return driverLoaded;
//Wrap the DatabaseConnectionPool Error to the DatabaseController
public void databaseEventOccurred(DatabaseEvent de)
raiseDatabaseEvent(de.getErrorMessage());
//Event Handling Code
//Used to add database listeners (Its sync'd so you can change the listeners when firing an event)
public synchronized void addDatabaseListener(DatabaseListener databaseControllerListener)
databaseControllerListeners.add(databaseControllerListener);
//Used to remove a listener from the list (Its sync'd so you can change the listeners when firing an event)
public synchronized void removeDatabaseListener(DatabaseListener databaseControllerListener)
databaseControllerListeners.remove(databaseControllerListener);
//Used to send the raise event to the listeners
private synchronized void raiseDatabaseEvent(String databaseError)
DatabaseEvent databaseEvent = new DatabaseEvent(this, databaseError);
Iterator listeners = databaseControllerListeners.iterator();
while(listeners.hasNext())
DatabaseListener listener = (DatabaseListener) listeners.next();
listener.databaseEventOccurred(databaseEvent);
/********************* DatabaseConnectionPool **************/
package com.softnet.database;
import java.io.*;
import java.sql.*;
import java.util.*;
import com.softnet.database.*;
import com.softnet.database.DatabaseSettings;
public class DatabaseConnectionPool
//min number of connections
private int minNumberOfConnections = 1;
//max number of connections -1 is unlimited
private int maxNumberOfConnections = -1;
//Store the connections
protected Hashtable databaseConnections = null;
//Database Info
protected DatabaseSettings databaseSettings;
//to hold Driver state
private boolean databaseDriverState = false;
//To hold connection checker
private DatabaseConnectionCheck connectionChecker = null;
//Used to hold the DatabaseConnectionPool listeners
private List databaseConnectionPoolListeners = new ArrayList();
public DatabaseConnectionPool(DatabaseSettings databaseSettings, int minNumberOfConnections, int maxNumberOfConnections)
this.databaseSettings = databaseSettings;
this.minNumberOfConnections = minNumberOfConnections;
this.maxNumberOfConnections = maxNumberOfConnections;
//Load Driver
databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
//Create connection
createConnections();
public DatabaseConnectionPool(int minNumberOfConnections, int maxNumberOfConnections)
this.minNumberOfConnections = minNumberOfConnections;
this.maxNumberOfConnections = maxNumberOfConnections;
//Database Settings Get/Set
public DatabaseSettings getDatabaseSettings()
return databaseSettings;
public void setDatabaseSettings(DatabaseSettings databaseSettings)
this.databaseSettings = databaseSettings;
//Driver State Get
public boolean getDatabaseDriverState()
return databaseDriverState;
public void createConnections()
if(databaseDriverState == false)
databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
//Create all connections and load the minimum in the Hashtable
if(databaseConnections == null)
if(databaseDriverState == true && minNumberOfConnections != 0)
databaseConnections = new Hashtable();
for(int i = 0; i < minNumberOfConnections; i++)
try
databaseConnections.put(DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword()), Boolean.FALSE);
catch(SQLException sqle)
//Problem break loop and destroy any connections
destroyConnections();
//Raise event
raiseDatabaseEvent("DatabaseConnectionPool: Error creating database connections. \nERROR: " + sqle.getMessage());
break;
//If no connection check exists create one
if(connectionChecker == null)
connectionChecker = new DatabaseConnectionCheck(this);
connectionChecker.start();
public Connection getConnection()
Connection connection = null;
boolean errorWithConnection = false;
Enumeration connections = databaseConnections.keys();
synchronized (databaseConnections)
while(connections.hasMoreElements())
errorWithConnection = false;
connection = (Connection) connections.nextElement();
Boolean state = (Boolean) databaseConnections.get(connection);
//If connection is not used, use it.
if(state == Boolean.FALSE)
try
connection.setAutoCommit(true);
catch(SQLException e)
//Problem with connection remove connection and replace it
databaseConnections.remove(connection);
try
connection = DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword());
catch(SQLException sqle)
errorWithConnection = true;
if(errorWithConnection == false)
// Update the Hashtable to show this one's taken
databaseConnections.put(connection, Boolean.TRUE);
// Return the connection
return connection;
//All connections being used check to max to see if we can make a new one
if(maxNumberOfConnections == -1 || maxNumberOfConnections > databaseConnections.size())
try
connection = DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword());
catch(SQLException sqle)
errorWithConnection = true;
if(errorWithConnection == false)
databaseConnections.put(connection, Boolean.TRUE);
return connection;
//If not connections free and max connections reached wait for a free connection
return getConnection();
public void returnConnection(Connection connection)
boolean errorWithConnection = false;
//Make sure connection still works
try
connection.setAutoCommit(true);
catch(SQLException e)
//Problem with connection remove connection and replace it
databaseConnections.remove(connection);
try
connection = DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword());
catch(SQLException sqle)
errorWithConnection = true;
if(errorWithConnection == false)
databaseConnections.put(connection, Boolean.FALSE);
public void destroyConnections()
Connection connection = null;
if(databaseConnections != null)
//Close all connections
Enumeration connections = databaseConnections.keys();
while (connections.hasMoreElements())
connection = (Connection) connections.nextElement();
try
connection.close();
catch(SQLException ignore) {}
//Free up hashtable
databaseConnections = null;
private boolean loadDatabaseDriver(String databaseDriver)
boolean driverLoaded;
if(databaseDriver.equals("") == false)
try
//Load Database Driver
Class.forName(databaseDriver);
driverLoaded = true;
catch (ClassNotFoundException cnfe)
//Raise event
raiseDatabaseEvent("DatabaseController: Error loading database driver. \nERROR: " + cnfe.getMessage());
driverLoaded = false;
else
driverLoaded = false;
return driverLoaded;
//Event Handling Code
//Used to add database listeners (Its sync'd so you can change the listeners when firing an event)
public synchronized void addDatabaseListener(DatabaseListener databaseConnectionPoolListener)
databaseConnectionPoolListeners.add(databaseConnectionPoolListener);
//Used to remove a listener from the list (Its sync'd so you can change the listeners when firing an event)
public synchronized void removeDatabaseListener(DatabaseListener databaseConnectionPoolListener)
databaseConnectionPoolListeners.remove(databaseConnectionPoolListener);
//Used to send the raise event to the listeners
private synchronized void raiseDatabaseEvent(String databaseError)
DatabaseEvent databaseEvent = new DatabaseEvent(this, databaseError);
Iterator listeners = databaseConnectionPoolListeners.iterator();
while(listeners.hasNext())
DatabaseListener listener = (DatabaseListener) listeners.next();
listener.databaseEventOccurred(databaseEvent);
class DatabaseConnectionCheck extends Thread
private DatabaseConnectionPool connectionPool;
DatabaseConnectionCheck(DatabaseConnectionPool connectionPool)
this.connectionPool = connectionPool;
public void run()
try
while(true)
//check threads every 30 seconds
this.sleep(300000);
if(connectionPool.databaseConnections != null)
Connection connection = null;
Enumeration connections = connectionPool.databaseConnections.keys();
synchronized (connectionPool.databaseConnections)
while(connections.hasMoreElements())
connection = (Connection) connections.nextElement();
Boolean state = (Boolean) connectionPool.databaseConnections.get(connection);
//If connection is not used, use it.
if(state == Boolean.FALSE)
try
connection.setAutoCommit(true);
catch(SQLException e)
//Problem with connection remove connection and replace it
connectionPool.databaseConnections.remove(connection);
try
connection = DriverManager.getConnection(connectionPool.databaseSettings.getDatabaseURL(), connectionPool.databaseSettings.getUserName(), connectionPool.databaseSettings.getUserPassword());
catch(SQLException sqle)
connection = null;
// Update the Hashtable with new connection if its not null
if(connection != null)
connectionPool.databaseConnections.put(connection, Boolean.FALSE);
catch(InterruptedException ignored) {}
Basicly the why it works is the connection pool hold the database connections. When the user needs a connection they use the database controller to request a connection (By create a instance and called the connect() method) and the connection is either created or grabed from the connection pool. After the user is done with the connection they call the disconnect() method which closes the connection or returns it to the connection pool.
--Z3r0CooL -
Creating and assigning logical systems foe connecting BW to R/3
Hello ABAP Pundits,
I have to connect R/3 (sender) to BW (reciever). So I guess, I need to create logical systems in both BW and R/3.
So does this mean that I have to create two logical systems on R/3 and two logical systems on B/W ?
Do I need to do assignement of these newly created logical systems on both R/3 and BW separately ?
Pleae elaborate...
Regards,
Tushar.I think the following documents should clear your doubts.
http://www.sappro.com/downloads/OneClientDistribution.pdf
http://www.sapgenie.com/sapgenie/docs/ale_scenario_development_procedure.doc
Regards,
Ravi
Note - Please mark all the helpful answers -
Can't be able to connect mobile and the servlet ?(Urgent)
hi to all java Gurus..
I need ur help ..
My problem is that I am not be able to connect my mobile Nokia N70 to the servlet and when I am trying with Emulator its working fine but having problem only with physical device.
On that I have to connect to internet through GPRS.
When I gave a call to the servlet during that time I wrote a string value in the output stream which is transferred as a piece of information according to which servlet respond.
So plz tell me how to resolve this problem ??? frm the past one week I am stuck in this problem. plz help
--- regards
pank_naini
Edited by: pank_naini on Jul 4, 2008 3:36 AMhi Omar,
thnx.. but i clear the first part.. nw i am able to connect my application through phone and i m getting expected outcome but in my view there are some limitation when i gave a call (may be i would be wrong)
- Application always run on the port 8080; earlier i was trying to connect on port 9080.
- and method should be the GET rather then POST.
if any one is wrong then i am not able to connect my application...
Is there any setting in the phones ?
--Regards
pank_naini -
Using a single connection for jsp, servlets and classes
Hi! I'm building a web site that uses JSP, Servlets and some classes. I use database access in all my pages. I want to open a connection and use it for all the pages while the user is in my site, so I don't need to open a connection with every new jsp or servlet page. My software must be capable of connection with various databases, like SQLServer, Oracle, Informix, etc... so the solution must not be database (or OS or web server) dependant.
Can you help me with this? Some ideas, links, tips? I'll REALLY appreciate your help.
Regards,
Raul Medinause an initialiation servlet with pooled connection which can be accessed as sesssion object.
Abrar -
How can I use JTA in my business logic and execute process with PAPI?
HI All,
How can I use JTA in my business logic and execute process with PAPI?
When my business logic has exception, the process will rollback.
or the process has some exceptions, my business logic also will rollback.
I don't know how to do it.
Does anyone know how to do it?Thank you for your reply, Daniel.
But I think I did not express my mind clearly.
There is a scene that I have 2 Application Server.
My business code is deployed in one Server.
The BPM is deployed in another Server.
I want to execute Task use PAPI.(ProcessServiceSession.runActivity)
In my business code, I will do something before execute Task.
I need my business logic and Task in same transaction.
To ensure them "all-or-nothing" .
As you say, if The transactions are managed by Oracle BPM.
then can I retrieve OBPM transcaction in my business code?
Maybe you are looking for
-
Time Machine won't work with Time Capsule
HI all I have been using TM to backup to an Iomega portable drive but because the drive is relatively small and because I thought that having less wires around the place would be a good thing, I bought Time Capsule. However when I try to backup to TC
-
How to Store an XML Data into Table?
Hi All, My Requirement is "I Have an XML File (or) XML Data as CLOB, now I should decode this XML Data and find the equivalent data for columns in a table and then store that in a relational table", Would be greatful if any one can provide me a feasi
-
Is iphone 6 IOS interrupt driven?
Is iphone 6 IOS interrupt driven ?
-
How do I cancel an automatic renewal (Ipad app : La Tribune)?
This is a monthly renewal and a want to cancel it. How I can do this?
-
! Integration of MAC and iTunes with Sonos
I got my first MAC only a few months back. Yesterday, I have installed my first Sonos Speaker System (bridge + play3) together with my IMAC and Synology NAS yesterday. For a long time I have been ripping and storing CD’s on my NAS, made them availabl