Websphere+oracle,EJSADMIN必须是具有DBA权限吗?

[复制链接]
查看11 | 回复2 | 2014-2-19 11:55:14 | 显示全部楼层 |阅读模式
Websphere+oracle,EJSADMIN必须是具有DBA权限吗?
看了一些安装说明,都是给EJSADMIN有DBA权限,
太不安全了。不给他DBA权限,WEBSPHERE 启动的时候
就出错误。
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
抱歉,但是没有看到这篇文章:WebSphere Developer's Journal上面的。好像不需要权限,还是设置的问题吧?
Running WSAD and WAS with Oracle
by Troy Holmes
During a recent EAI project, it came to my attention that it is difficult to find documentation on the topic of installing Oracle into WebSphere Studio Application Developer (WSAD) and WebSphere Application Server (WAS) 5.0. This article will attempt to expedite the search for this information by discussing both installation processes.

WSAD
Step 1: Install Oracle
The first step is to install the Oracle drivers and the tnsnames.ora file into our system. To do this, install the Oracle client onto the machine that contains WSAD by following the instructions provided by Oracle. For simplicity's sake, this article assumes use of the defaults provided by the Oracle installation wizard.

Step 2: Set Up the Default User Password
This is part of the new J2C security configuration and it is located on the Security tab. In this section, we will create a user ID and password and assign it to an alias ID. This alias is required in Step 5.

Select the Security tab. It is located three tabs to the right of the Data Source tab.
Next, add a JAAS Authentication Entry by selecting the Add button next to JAAS Authentication Entries.
Fill in the following information and select the OK button:
-Alias: OracleUser
-User ID: The Oracle-defined user ID
-Password: The password for the Oracle user
-Description: Default Oracle user
Step 3: Create a Server and Configuration
WSAD uses an embedded server to test development code. To use this server we must first create a new server and configuration. Create a new server by selecting New -> Other -> Server/Configuration from the menu.
On the first screen enter Test Server as the server name and select Test Environment as the server type. Use the default port of 9080 and click on the Finish button. This will create a new server and configuration in the Server Configuration screen located in the lower panel of WSAD.
Step 4: Add the JDBC Driver
This step will link the Oracle driver we installed in Step 1 to the newly created server/configuration.

First, select the server and select the Data Source tab. This tab sets the configuration on the server.
From the Data Source tab of the server configuration, select the Add button. This will display a list of databases.
From this list, select the Oracle database; this will populate the provider types.
From the provider types list, select JDBC:Thin

river.
Select the Next button and assign the name OracleThinDriver to this driver.
Finally, select the Finish button.
Step 5: Add the Data Source
The data source is where we assign the JNDI name and alias users.

First, highlight the JDBC provider that we created in Step 3 and select the Add button.
A popup window will appear that requires the selection of a type of driver; here again, select JDBC:Thin: Driver.
We have two options available on this screen, enabling us to select a version 5.0 data source or a version 4.0 data source. In this article, we are concerned only with new functionality and therefore will not be discussing the 4.0 setup. Select the 5.0 data source and then click the Next button.
Leave the name and JNDI at their default values.
Select the Alias list box and choose the alias created in Step 2, OracleUser. Add this alias to both types of authentication.
Finally, select the Finish button.
Step 6: Edit the Resource
The only required field in the Resources screen is the URL. This field is used by the server to look up the tnsnames.ora file and find the port to the database. Select the URL and make the following modification.
The URL format is jdbc

racle:thin: @xxx.xxx.xxx.xxx:1521:dbalias. This URL is broken into four sections delimited by colons. The URL is defined as follows:
Provider type
Oracle host IP address
Oracle listener port
Oracle database name
This URL needs to match the Oracle configuration for your installation. It is essential that these fields match the corresponding tnsnames.ora file. If any of the information is incorrect, you'll receive errors.
Figure 1 is an example of the completed data source.
Now that we've configured our WSAD environment, we can proceed to testing. This can be completed in six steps:
1.Create a new Web project.
2.Copy the servlet code from Listing 1 into your new Web project. Modify the table name and column name in the servlet code to match the table and columns in your database.
3.Modify the user ID and password to match your database.
4.Modify your web.xml to initialize the servlet on startup.
5.Publish the project to the server/ configuration we created earlier.
6.Start the server.

If successful, the server console will now display the output of our table.

WAS
The Admin Console is now run through the Deployment Manager. We will not go into detail on this process, as that is out of scope for this article. However, it is important to understand that all configuration management is handled via the Deployment Manager. If you would like more information on this topic, refer to the IBM Redbook (SG24-6195-00), titled "IBM WebSphere Version 5.0 System Management and Configuration."

Step 1: Install Oracle
We must install the Oracle drivers on each application server. The Oracle driver is a server resource and the Deployment Manager does not manage it. To do this, install the Oracle client onto the machine that contains WAS by following the instructions provided by Oracle. As before, use the defaults provided by the Oracle installation wizard.
Step 2: Create the J2C Default User ID and Password
Now we need to set up our alias, which will be required in Step 5.

Start the application server and deployment manager, and log in to the Admin Console.
Select the Security link.
Next, select the JAAS Configuration link. A list of menu options should be displayed.
Select the J2C Authentication Data link, which will pop up a screen that displays the J2C authentication data entries.
Select the New button and a window will display that enables the input of the alias information. Fill in the following information and select the OK button:
-Alias: OracleUser
-User ID: The user ID that you have set up in Oracle
-Password: The password that you have set up in Oracle for the user ID above
-Description: Default Oracle user
Step 3: Add the JDBC Driver

Expand the Resources tree and select the JDBC providers. This brings up the screen that requires the selection of a scope. You must select a scope and then the Apply button. If you do not select the Apply button, none of the modifications made in the next few steps will be propagated to the correct scope.
In this exercise, we will propagate the changes at the cell level, which implies that the changes propagate to all nodes and servers within the given cluster. Select the Apply button and then the New button.
A screen will appear that displays a list of JDBC providers. Select the Oracle JDBC Thin Driver and then the OK button.
On the next screen, we will accept the defaults values; notice that the classpath has a path variable for Oracle. We will set up this variable in Step 5.
Finally, select the OK button.
Step 4: Add the Data Source

Select the JDBC driver from the list of installed drivers.
Select the Data Source link at the bottom of the page. Select the version 5.0 data source. This is marked as "Data Source" on the screen, while the version 4 data source is marked as "Data Source (version 4.0)."
Next, assign the JNDI name to the data source. Click the New button and a screen will appear that requires the input of the name and JNDI name. The application server does not put any default values into these fields. We will enter the same values that were the defaults in the WSAD example. For name enter data source 1, and for JNDI name enter jdbc/ds1.
Select the list box on Container Managed and select the alias created in Step 2.
Press the OK button
Step 5: Add the Resource

Select the Data Source link. This will display the data source panel.
Scroll to the bottom of the screen and select the Custom properties link.
The only required field is the URL; therefore, select the URL from the Name column.
The URL format is: jdbc

racle: thin:@xxx.xxx.xxx.xxx:1521:dbalias. This URL should be defined in the same manner as in WSAD Step 6.
Input the correct data into the URL value field and select the OK button.
Select the Save option in the upper right-hand corner to save the configuration to the master configuration file. This will propagate the configuration to the nodes within the cluster
Step 6: Create the JDBC Driver Environment Variable
The final step is to create an environment variable that enables WAS to access the JDBC driver.

First, select the Environment link on the left toolbar.
Next, select the Manage WebSphere Variables link. This will display a list of variables managed by WebSphere. We must remember to select the scope of the change as we did for setting up the data source.
Select cell level and press the Apply button.
Select the ORACLE_JDBC_DRIVER_PATH.
Modify the value to correspond to the location of your Oracle driver. The default is "c:\oracle\ora81\jdbc\lib".
Select the Save button in the upper right-hand corner.
Now that we have configured our WAS environment, we need to test our configuration. This can be completed in six easy steps:
1.Create a new Web project.
2.Copy the servlet code as before into your new Web project. Modify the table name and column name in the servlet code to match the table and columns in your database.
3.Modify your web.xml to initialize the servlet on startup.
4.Create a WAR file wrapping the servlet code for deployment.
5.Install the WAR file into WAS as a new enterprise application.
6.Start the application.

If we were successful, the log files of your server console should display our table information.

Author Bio
Troy Holmes has been working in the IT industry for 14 years and is currently a J2EE architect using WebSphere 5.0. He has completed several large-scale J2EE applications using both BEA and WebSphere products. Troy is a certified Java programmer who has been working in the Java environment for five years. He also has more than five years of experience with Oracle and two years of experience with Informix.

Source Code
Listing 1
// Servlet Code
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.naming.NamingException;
import javax.naming.InitialContext;
import javax.sql.*;
import java.sql.*;
/**
* DBServlet retrieves the data from the
* database used for testing connectivity
*
* @author Troy E. Holmes
* @version $Revision: 1.4 $ $Date: 26 May 2003
* 10:35:42 $
*/
public final class DBServlet extends HttpServlet {
// -----------------------Instance Variables
/**
* The debugging detail level for this servlet.
*/
private int debug = 1;
// ---------------------------HttpServlet Methods
/**
* Gracefully shut down this servlet, releasing any
* resources that were allocated at initialization.
*/
public void destroy() {
if (debug >= 1)
System.out.println("Finalizing servlet&quot

;
}
/**
* Initialize this servlet
* @exception ServletException if we cannot configure
* ourselves correctly
*/
public void init() throws ServletException {
// Process our servlet initialization parameters
String value;
value = getServletConfig().getInitParameter ("debug&quot

;
try {
debug = Integer.parseInt(value);
} catch (Throwable t) {
debug = 0;
}
// Load our data from persistent storage and log
// to console
try {
retrieve();
} catch (Exception e) {
System.out.println("retreive exception logged&quot

;
}
}
// --------------------------Public Methods
/**
* Return the debugging detail level for this servlet.
*/
public int getDebug() {
return (this.debug);
}
/**
* Retreive the data from its persistent storage.
*
* @exception Exception if any problem occurs while loading
*/
private synchronized void retrieve() throws Exception {
// First create the local vars for the query
DataSource ds = null;
Connection conn = null;
PreparedStatement statement = null;
ResultSet rs = null;
InitialContext ic = null;
// Put your select statement here !!
String queryString = ("SELECT * FROM MYTABLE&quot

;
// Put your column name here!!
String columnName = ("DNAME&quot

;
String columnValue = null;
try {
// The Initial Context
ic = new InitialContext();
// The Datasource object
ds = (DataSource) ic.lookup("jdbc/ds1&quot

;
// Obtain a Connection from the
// DataSource using userid and password
conn = ds.getConnection("was","was&quot

;
} catch (NamingException lx) {
System.out.println("error in lookup:
" + lx.getMessage());
} catch (SQLException ex) {
System.out.println("error during connection:
" + ex.getMessage());
}
try {
// Create the statement passing the
// querystring
statement =
conn.prepareStatement(
queryString,
rs.TYPE_SCROLL_INSENSITIVE,
rs.CONCUR_READ_ONLY);
// execute the query
rs = statement.executeQuery();
// See if any data was returned
boolean test = rs.first();

// Loop through all data and output the results to the
// console
while (test) {
// MODIFY THIS VALUE TO MATCH THE COLUMN
// OF YOUR TABLE !!!!
columnValue = rs.getString(columnName);
System.out.println("Database result: " + columnValue);
// Get the next row
test = rs.next();
}
} catch (SQLException ex) {
System.out.println("error during execute&quot

;
}
}
}
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
抱歉,有个地方没有说明白。我又做了一次测试。如果单纯用ejsadmin的话,这个用户的权限是
connect,resource,没有问题,可以启动起来。下面是数据库的配置信息,
# Repository database settings
com.ibm.ejs.sm.adminServer.dbdataSourceClassName=oracle.jdbc.pool.OracleConnectionPoolDataSource
com.ibm.ejs.sm.adminServer.dbserverName=192.168.1.88
com.ibm.ejs.sm.adminServer.dbportNumber=1521
com.ibm.ejs.sm.adminServer.dbdatabaseName=orcl
com.ibm.ejs.sm.adminServer.dbuser=ejsadmin
com.ibm.ejs.sm.adminServer.dbpassword=ejsadmin
com.ibm.ejs.sm.adminServer.dbdisable2Phase=true
# URL is only valid for Oracle
com.ibm.ejs.sm.adminServer.dbURL=jdbc

racle:thin:@192.168.1.88:1521

rcl
但现在假设我们的应用的用户是test,我们项目的数据库用户肯定不能用ejsadmin,

# Repository database settings
com.ibm.ejs.sm.adminServer.dbdataSourceClassName=oracle.jdbc.pool.OracleConnectionPoolDataSource
com.ibm.ejs.sm.adminServer.dbserverName=192.168.1.88
com.ibm.ejs.sm.adminServer.dbportNumber=1521
com.ibm.ejs.sm.adminServer.dbdatabaseName=orcl
com.ibm.ejs.sm.adminServer.dbuser=test
com.ibm.ejs.sm.adminServer.dbpassword=test
com.ibm.ejs.sm.adminServer.dbdisable2Phase=true
# URL is only valid for Oracle
com.ibm.ejs.sm.adminServer.dbURL=jdbc

racle:thin:@192.168.1.88:1521

rcl
这个test的用户的权限也是connect,resource,
启动adminsever后,会报这样的错误:
[04.01.14 12:00:40:318 CST] 33a45e9a DBMgr W SMTL0039W: データベース照会で例外が発生しました: select * from EJSADMIN.WLMBOOT_TABLE where GROUP_NAME = ?java.sql.SQLException: ORA-00942: 表またはビューが存在しません。

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
抱歉是日文的,从上面的情况可以看出,如果test没有dba的权限的话,不能访问ejsadmin用户里面的表。这些表主要是存储WebSphere的一些配置信息,比如部署了那些Web Aplication,建立的DataStore等等,
启动的
如果给test用户赋予 dba的权限,就ok了。
我的整个安装过程,没有做别的配置,只是做了数据库连接。应该牵扯不到别的
东西。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行