文章
云计算
作者:Jerry (Oracle)
2016 年 6 月 6 日发布
Oracle JAVA Cloud 进阶系列 (01) — JBOSS 上应用迁移到 JCSOracle JAVA Cloud 在云中以自助方式为应用系统和 Oracle SaaS 扩展快速,预配 Oracle WebLogic 服务器,依托开放标准构建,因而可以方便地部署和管理 Java 应用。为面向业务关键型应用提供企业级安全性、高可用性和性能。今天讲解将 WAS 应用服务器的业务系统迁移到 Oracle JAVA Cloud 之上。本文以图文的形式详细描述迁移的操作步骤。
1. 在浏览器里输入:https://cloud.oracle.com/sign_in 并且选择“Public Cloud Services”作为数据中心 然后点击“Sign In to My Service”。

2. 输入凭据并且点击 Sign in。
3. 点击右上角的 Consoles, 然后点击 Oracle Java Cloud Service。

4. 需要一个预分配的 JCS 服务实例。点击它并记录下服务实例的详细信息,参照下图

5. 点击它,记下该服务实例的详细信息,如下面的屏幕。

6. 由于我们还需要一个 Oracle 数据库实例的服务,单击控制台选项卡上单击,然后点击数据库云服务。

7. 你也应该有�������个 Oracle 数据库实例的服务

8. 记下 DBCS 实例的连接描述符和公共 IP,你以后会需要它。

9. 使用 putty 连接到 DBCS 实例:
i) 点击开始按钮,然后搜索 putty,并打开它。
ii) 转到 SSH->Auth,点击浏览并选择私钥文件或 PPK 文件。

iii) 导航到 Session,并输入您 DBCS 实例的公网 IP,然后点击打开。

iv) 输入“oracle”登录,输入创建 PPK 文件时使用的密码

v) 您需要创建一个用户“trade”,将用于创建数据源。登录 DBCS 实例后,执行以下命令:
sqlplus system/Welcome#1@Daytrader:1521/PDB1.training6088431169.oraclecloud.internal
注意:你必须对数据库有不同的证书,你也应该有不同的数据库连接 URL; 把它从上面的屏幕截图我们下 DBCS 实例信息页面。
create user trade identified by trade; Grant DBA to trade; exit sqlplus trade/trade@Daytrader:1521/PDB1.training6088431169.oraclecloud.internal
注意:不要关闭这个 putty session,我们将需要在稍后,trade 用户下执行进一步的 SQL 语句。
你下载的源代码解压缩后会有一个 DayTrader 的文件夹。 该代码可以支持许多数据库一起使用,但我们将使用 Oracle 数据库。大多数的文件与 JavaEE 相关的我们会做出修改。
1. 如果机器上有 maven 的配置,需要在下面添加代理 settings.xml 文件。
代理服务器设置:您需要添加代理的代理标签。这取决于你在哪里做这个迁移实验。如果你在 Oracle 的办公环境中,你需要有 active tag 为 true;从非 Oracle 的办公环境中,active tag 为 false。
<proxies> <proxy> <id>optional</id> <active>false</active> <protocol>http</protocol> <host>www-proxy.us.oracle.com</host> <port>80</port> <nonProxyHosts>local.net|some.host.com</nonProxyHosts> </proxy> </proxies>
2. 我们需要添加所需的 jar 依赖项在 WebLogic Server 中。同时,我们也需要删除对于 EJB JAR 的依赖并添加版本号 。我们需要部署 WAR 文件访问完整应用。
File Name: D:\WebsphereToWLS\daytrader-master\javaee6\modules\web\pom.xml
<dependency> <groupId>org.apache.geronimo.daytrader.javaee6</groupId> <artifactId>utils</artifactId> <type>ejb</type> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.geronimo.daytrader.javaee6</groupId> <artifactId>entities</artifactId> <type>ejb</type> <version>3.0.0</version> </dependency>

<dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.5</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2</version> </dependency> <dependency> <groupId>commons-digester</groupId> <artifactId>commons-digester</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.0.4</version> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>javax.ejb</groupId> <artifactId>ejb-api</artifactId> <version>3.0</version> </dependency> <dependency> <groupId>org.hibernate.common</groupId> <artifactId>hibernate-commons-annotations</artifactId> <version>4.0.1.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.2.7.SP1</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.2.7.SP1</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-envers</artifactId> <version>4.2.7.SP1</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-infinispan</artifactId> <version>4.2.7.SP1</version> </dependency> <dependency> <groupId>org.jboss.logging</groupId> <artifactId>jboss-logging</artifactId> <version>3.1.2.GA</version> </dependency>


3. 增加 weblogic.xml 中文件,该文件在这里用它来为应用程序提供了上下文根。
File Name: D:\WebsphereToWLS\daytrader-master\javaee6\modules\web\src\main\webapp\WEB-INF\weblogic.xml
<?xml version="1.0" encoding="UTF-8"?> <wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd"> <wls:context-root>/daytrader</wls:context-root> </wls:weblogic-web-app>

4. 我们不需要在 web 资源引用,xml 文件中注释掉,否则环境变量的冲突。
File name: D:\WebsphereToWLS\daytrader- master\javaee6\modules\web\src\main\webapp\WEB-INF\web.xml

5. 我们在部署应用程序需要抛出异常。我们得到这个异常,因为 Java EE 6 的方法应该抛出这个异常。所以我们要添加它。
File name: D:\WebsphereToWLS\daytrader-master\javaee6\modules\web\src\main\java\org\apache\geronimo\daytrader\javaee6\web\ejb3\TradeSLSBRemote.java
import java.rmi.RemoteException; public double investmentReturn(double investment, double NetValue) throws RemoteException; public QuoteDataBean pingTwoPhase(String symbol) throws Exception,RemoteException;

6. 当我们做了更改方法签名,我们还需要改变它的定义。其他改变是为了避免 JNDI 名称冲突。
File name: D:\WebsphereToWLS\daytrader-master\javaee6\modules\web\src\main\java\org\apache\geronimo\daytrader\javaee6\web\ejb3\TradeSLSBean.java
import javax.ejb.Remote; import java.rmi.RemoteException; @Resource(name = "jms/myQueueConnectionFactory") private QueueConnectionFactory queueConnectionFactory; @Resource(name = "jms/myTopicConnectionFactory") private TopicConnectionFactory topicConnectionFactory;


7. 我们只是改变 JNDI 名称,只是删除“java:comp/env”。
File name: D:\WebsphereToWLS\daytrader-master\javaee6\modules\web\src\main\java\org\apache\geronimo\daytrader\javaee6\core\direct\TradeJEEDirect.java.

8. 我们将因此我们需要改变的 JNDI 名称部署 WAR 文件。
File name: D:\WebsphereToWLS\daytrader-master\javaee6\modules\web\src\main\java\org\apache\geronimo\daytrader\javaee6\web\TradeAction.java
if (TradeConfig.runTimeMode == TradeConfig.EJB3) {
try {
Class c = Class.forName("org.apache.geronimo.daytrader.javaee6.web.ejb3.TradeSLSBBean");
if ((trade == null) ||
(!(trade.getClass().isAssignableFrom(c)))) {
InitialContext context = new InitialContext();
try {
trade = (TradeServices) context.lookup("java:global/web/TradeSLSBBean!org.apache.geronimo.daytrader.javaee6.web.ejb3.TradeSLSBLocal");
} catch (Exception ex) {
Log.error("TradeAction:createTrade - Lookup of TradeSLSBRemote failed!!!");
trade = (TradeServices) context.lookup("java:global/web/TradeSLSBBean");
}
}
}
catch (Exception e) {
Log.error("TradeAction:TradeAction() Creation of Trade EJB 3 failed\n" + e);
re = new RuntimeException(e);
}
} else if (TradeConfig.runTimeMode == TradeConfig.SESSION3) {
try {
Class c = Class.forName("org.apache.geronimo.daytrader.javaee6.web.ejb3.DirectSLSBBean");
if ((trade == null) ||
(!(trade.getClass().isAssignableFrom(c)))) {
InitialContext context = new InitialContext();
try {
trade = (TradeServices) context.lookup("java:global/web/DirectSLSBBean!org.apache.geronimo.daytrader.javaee6.web.ejb3.DirectSLSBLocal");
} catch (Exception ex) {
Log.error("TradeAction:createTrade - Lookup of DirectSLSBRemote failed!!!");
trade = (TradeServices) context.lookup("java:global/web/DirectSLSBBean");
}
}
}

9. 我们需要删除的“java: comp”,从数据源 JNDI name。
File name: D:\WebsphereToWLS\daytrader-master\javaee6\modules\utils\src\main\java\org\apache\geronimo\daytrader\javaee6\utils\TradeConfig.java

File name: D:\WebsphereToWLS\daytrader-master\javaee6\modules\web\src\main\java\org\apache\geronimo\daytrader\javaee6\web\prims\PingServlet2JNDI.java

10. 因为这些代码最初是由 IBM 开发的,然后给 Apache。所以我们需要做相应的修改。
File name: D:\WebsphereToWLS\daytrader-master\javaee6\modules\web\src\main\java\org\apache\geronimo\daytrader\javaee6\web\TradeConfigServlet.java
Line number 176 and 177
//String accessModeStr = req.getParameter("AcessMode");
String accessModeStr = "Standard";
You need to uncomment line number 176 and comment line number 177.
String accessModeStr = req.getParameter("AcessMode");
// String accessModeStr = "Standard";

11. 我们需要为 WebLogic 服务器添加休眠相关的属性,我们也需要更改 JNDI 名称。
File name: D:\WebsphereToWLS\daytrader-master\javaee6\modules\entities\src\main\resources\META-INF\persistence.xml
<jta-data-source>jdbc/datasources/TradeDataSource</jta-data-source> <non-jta-data-source>jdbc/datasources/NoTxTradeDataSource</non-jta-data-source> <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/> <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.WeblogicTransactionManagerLookup"/> <property name="hibernate.hbm2ddl.auto" value="create-drop" /> <property name="hibernate.show_sql" value="true" />

其他错误:如果不进行这些更改你会得到异常/错误。
Filename: D:\WebsphereToWLS\daytrader-master\javaee6\modules\web\src\main\webapp\account.xhtml
Line number: 188
<h:dataTable id="orders1" value="#{accountdata.allOrders}" var="item">
Line number: 343
<h:commandButton id="submit1" type="submit" value="quotes" action="#{quotedata.getQuotesBySymbols}" />
Here the spelling of ‘maximum’ is wrong as this is an argument of a tag, it must be corrected.
File name: D:\WebsphereToWLS\daytrader-master\javaee6\modules\web\src\main\webapp\welcome.xhtml
Line number: 66
<h:inputText id="uid" value="#{tradeapp.userID}" required="true"><f:validateLength minimum="1" maximum="10" /></h:inputText>
Line number: 67
<h:inputSecret id="password" value="#{tradeapp.password}" required="true"><f:validateLength minimum="1" maximum="10" /></h:inputSecret>
1. 进入 JavaEE 的文件夹,右键单击它并选择“CMD Prompt here”。

2. 运行“mvn clean package”。


注意:如果您在运行此命令第一次,它会下载从中央存储库的一些依赖。
在本节中,我们将创建一个管理控制台所需的数据源和 JMS 资源。我们可以做到这一点无论是通过管理控制台或 WLST。创建一个 Python文件 (DaytraderResourceCreation.py) 和下面的内容添加到它。您需要修改它根据您的环境,比如您的管理服务器名称,管理的服务器名称,域名和集群名称,还需要更改参数 DB 连接字符串了。
文件名:DayTraderResourceCreation.py
此脚本假定你有一个 Oracle 数据库 12c 的数据库云服务实例。所以,如果你有一个包含 Oracle 数据库 11g ,那么你可能需要更改脚本的服务实例。
For Service id URL will be jdbc:oracle:thin@localhost:1521:XE
For Service name URL will be jdbc:oracle:thin:@localhost:1521/pdborcl
Where XE is Service id for oracle database, and pdborcl is a service in oracle database.
connect('weblogic','welcome1','t3://daytrader-wls-1.Compute-TRAINING6088431169.oraclecloud.internal:7001')
# change the connecting URL to your admin server. Replace it with listen address of your admin server.
edit()
startEdit()
cmo.createJDBCSystemResource('jdbc/datasources/TradeDataSource')
cd('/JDBCSystemResources/jdbc/datasources/TradeDataSource/JDBCResource/jdbc/datasources/TradeDataSource')
cmo.setName('jdbc/datasources/TradeDataSource')
cd('/JDBCSystemResources/jdbc/datasources/TradeDataSource/JDBCResource/jdbc/datasources/TradeDataSource/JDBCDataSourceParams/jdbc/datasources/TradeDataSource')
set('JNDINames',jarray.array([String('jdbc/datasources/TradeDataSource')], String))
cd('/JDBCSystemResources/jdbc/datasources/TradeDataSource/JDBCResource/jdbc/datasources/TradeDataSource/JDBCDriverParams/jdbc/datasources/TradeDataSource')
cmo.setUrl('jdbc:oracle:thin:@//Daytrader:1521/PDB1.training6088431169.oraclecloud.internal')
#Replace the DB connect URL with URL you got from DBCS instance information page
cmo.setDriverName('oracle.jdbc.OracleDriver')
cmo.setPassword('trade')
cd('/JDBCSystemResources/jdbc/datasources/TradeDataSource/JDBCResource/jdbc/datasources/TradeDataSource/JDBCDriverParams/jdbc/datasources/TradeDataSource/Properties/jdbc/datasources/TradeDataSource')
cmo.createProperty('user')
cd('/JDBCSystemResources/jdbc/datasources/TradeDataSource/JDBCResource/jdbc/datasources/TradeDataSource/JDBCDriverParams/jdbc/datasources/TradeDataSource/Properties/jdbc/datasources/TradeDataSource/Properties/user')
cmo.setValue('trade')
cd('/JDBCSystemResources/jdbc/datasources/TradeDataSource/JDBCResource/jdbc/datasources/TradeDataSource/JDBCDataSourceParams/jdbc/datasources/TradeDataSource')
cmo.setGlobalTransactionsProtocol('EmulateTwoPhaseCommit')
cd('/JDBCSystemResources/jdbc/datasources/TradeDataSource')
set('Targets',jarray.array([ObjectName('com.bea:Name=DayTrade_cluster,Type=Cluster')], ObjectName))
#Replace it with your respective cluster name.
activate()
startEdit()
cd('/')
cmo.createJDBCSystemResource('jdbc/datasources/NoTxTradeDataSource')
cd('/JDBCSystemResources/jdbc/datasources/NoTxTradeDataSource/JDBCResource/jdbc/datasources/NoTxTradeDataSource')
cmo.setName('jdbc/datasources/NoTxTradeDataSource')
cd('/JDBCSystemResources/jdbc/datasources/NoTxTradeDataSource/JDBCResource/jdbc/datasources/NoTxTradeDataSource/JDBCDataSourceParams/jdbc/datasources/NoTxTradeDataSource')
set('JNDINames',jarray.array([String('jdbc/datasources/NoTxTradeDataSource')], String))
cd('/JDBCSystemResources/jdbc/datasources/NoTxTradeDataSource/JDBCResource/jdbc/datasources/NoTxTradeDataSource/JDBCDriverParams/jdbc/datasources/NoTxTradeDataSource')
cmo.setUrl('jdbc:oracle:thin:@//Daytrader:1521/PDB1.training6088431169.oraclecloud.internal')
# Replace the DB connect URL with URL you got from DBCS instance information page
cmo.setDriverName('oracle.jdbc.OracleDriver')
cmo.setPassword('trade')
cd('/JDBCSystemResources/jdbc/datasources/NoTxTradeDataSource/JDBCResource/jdbc/datasources/NoTxTradeDataSource/JDBCDriverParams/jdbc/datasources/NoTxTradeDataSource/Properties/jdbc/datasources/NoTxTradeDataSource')
cmo.createProperty('user')
cd('/JDBCSystemResources/jdbc/datasources/NoTxTradeDataSource/JDBCResource/jdbc/datasources/NoTxTradeDataSource/JDBCDriverParams/jdbc/datasources/NoTxTradeDataSource/Properties/jdbc/datasources/NoTxTradeDataSource/Properties/user')
cmo.setValue('trade')
cd('/JDBCSystemResources/jdbc/datasources/NoTxTradeDataSource/JDBCResource/jdbc/datasources/NoTxTradeDataSource/JDBCDataSourceParams/jdbc/datasources/NoTxTradeDataSource')
cmo.setGlobalTransactionsProtocol('EmulateTwoPhaseCommit')
cd('/JDBCSystemResources/jdbc/datasources/NoTxTradeDataSource')
set('Targets',jarray.array([ObjectName('com.bea:Name=DayTrade_cluster,Type=Cluster')], ObjectName))
# Replace it with your respective cluster name.
activate()
startEdit()
cd('/')
cmo.createJMSServer('MyJMSServer')
cd('/JMSServers/MyJMSServer')
set('Targets',jarray.array([ObjectName('com.bea:Name=DayTrade_server_1,Type=Server')], ObjectName))
#Replace it with your respective Managed Server name.
activate()
startEdit()
cd('/')
cmo.createJMSSystemResource('MyJMSModule')
cd('/JMSSystemResources/MyJMSModule')
set('Targets',jarray.array([ObjectName('com.bea:Name=DayTrade_cluster,Type=Cluster')], ObjectName))
# Replace it with your respective cluster name.
cmo.createSubDeployment('MySubDeployment')
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule')
cmo.createConnectionFactory('jms/myQueueConnectionFactory')
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/ConnectionFactories/jms/myQueueConnectionFactory')
cmo.setJNDIName('jms/myQueueConnectionFactory')
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/ConnectionFactories/jms/myQueueConnectionFactory/SecurityParams/jms/myQueueConnectionFactory')
cmo.setAttachJMSXUserId(false)
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/ConnectionFactories/jms/myQueueConnectionFactory/ClientParams/jms/myQueueConnectionFactory')
cmo.setClientIdPolicy('Restricted')
cmo.setSubscriptionSharingPolicy('Exclusive')
cmo.setMessagesMaximum(10)
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/ConnectionFactories/jms/myQueueConnectionFactory/TransactionParams/jms/myQueueConnectionFactory')
cmo.setXAConnectionFactoryEnabled(true)
cd('/JMSSystemResources/MyJMSModule/SubDeployments/MySubDeployment')
set('Targets',jarray.array([ObjectName('com.bea:Name=MyJMSServer,Type=JMSServer')], ObjectName))
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/ConnectionFactories/jms/myQueueConnectionFactory')
cmo.setSubDeploymentName('MySubDeployment')
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule')
cmo.createConnectionFactory('jms/myTopicConnectionFactory')
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/ConnectionFactories/jms/myTopicConnectionFactory')
cmo.setJNDIName('jms/myTopicConnectionFactory')
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/ConnectionFactories/jms/myTopicConnectionFactory/SecurityParams/jms/myTopicConnectionFactory')
cmo.setAttachJMSXUserId(false)
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/ConnectionFactories/jms/myTopicConnectionFactory/ClientParams/jms/myTopicConnectionFactory')
cmo.setClientIdPolicy('Restricted')
cmo.setSubscriptionSharingPolicy('Exclusive')
cmo.setMessagesMaximum(10)
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/ConnectionFactories/jms/myTopicConnectionFactory/TransactionParams/jms/myTopicConnectionFactory')
cmo.setXAConnectionFactoryEnabled(true)
cd('/JMSSystemResources/MyJMSModule/SubDeployments/MySubDeployment')
set('Targets',jarray.array([ObjectName('com.bea:Name=MyJMSServer,Type=JMSServer')], ObjectName))
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/ConnectionFactories/jms/myTopicConnectionFactory')
cmo.setSubDeploymentName('MySubDeployment')
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule')
cmo.createQueue('jms/TradeBrokerQueue')
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/Queues/jms/TradeBrokerQueue')
cmo.setJNDIName('jms/TradeBrokerQueue')
cmo.setSubDeploymentName('MySubDeployment')
cd('/JMSSystemResources/MyJMSModule/SubDeployments/MySubDeployment')
set('Targets',jarray.array([ObjectName('com.bea:Name=MyJMSServer,Type=JMSServer')], ObjectName))
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule')
cmo.createTopic('jms/TradeStreamerTopic')
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/Topics/jms/TradeStreamerTopic')
cmo.setJNDIName('jms/TradeStreamerTopic')
cmo.setSubDeploymentName('MySubDeployment')
cd('/JMSSystemResources/MyJMSModule/SubDeployments/MySubDeployment')
set('Targets',jarray.array([ObjectName('com.bea:Name=MyJMSServer,Type=JMSServer')], ObjectName))
activate()
We need this file to clear the environment. So you can execute the able Resource creation script again on same instance. So we also copy this file to JCS instance.
File name: ResourceDelete.py
connect('weblogic','welcome1','t3://daytrader-wls-1.Compute-TRAINING6088431169.oraclecloud.internal:7001')
# change the connecting URL to your admin server. Replace it with listen address of your admin server.
edit()
startEdit()
cd('/')
cmo.destroyJDBCSystemResource(getMBean('/JDBCSystemResources/jdbc/datasources/NoTxTradeDataSource'))
cmo.destroyJDBCSystemResource(getMBean('/JDBCSystemResources/jdbc/datasources/TradeDataSource'))
activate()
startEdit()
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule')
cmo.destroyConnectionFactory(getMBean('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/ConnectionFactories/jms/myQueueConnectionFactory'))
cmo.destroyConnectionFactory(getMBean('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/ConnectionFactories/jms/myTopicConnectionFactory'))
cmo.destroyQueue(getMBean('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/Queues/jms/TradeBrokerQueue'))
cmo.destroyTopic(getMBean('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/Topics/jms/TradeStreamerTopic'))
cd('/JMSSystemResources/MyJMSModule')
cmo.destroySubDeployment(getMBean('/JMSSystemResources/MyJMSModule/SubDeployments/MySubDeployment'))
activate()
startEdit()
cd('/')
cmo.destroyJMSSystemResource(getMBean('/JMSSystemResources/MyJMSModule'))
activate()
startEdit()
cmo.destroyJMSServer(getMBean('/JMSServers/MyJMSServer'))
activate()
i) 转到开始按钮和运行 WinSCP。

ii) 输入以下内容,然后点击登录。
File Protocol: SCP
Host Name: Public NAT IP of your JCS instance
User name: opc
Password: leave blank
Private Key file: location of your ppk file

iii) 输入创建 PPK 文件时使用的密码。

iv) 正如您上面有 3 个文件,web-3.0.0.war and DaytraderResourceCreation.py 和ResourceDelete.py 复制到 JCS 实例。

1. 在开始菜单中找到 putty。

2. 导航到 SSH->Auth 并且指定 PPK 的位置。

3. 导航到 Session 并且输入 JCS 实例的 IP,然后点击 Open。

4. 输入“OPC”作为用户名,然后输入您用于创建 PPK 文件的密码。

5.我们需要改变文件的权限。这样我们就可以将应用程序部署到服务器 并成功执行WLST。
sudo su cd /tmp chmod 777 web-3.0.0.war DayTraderResourceCreation.py ResourceDelete.py

6. 现在,我们将执行 WLST 创建所需的数据源和 JMS 资源。

1. 转到 JCS 服务实例的信息页面。点击图标右侧的服务实例,并单击打开 WebLogic 控制台上。

注意:你必须接受一些安全协议。
2. 输入“weblogic / welcome1”作为用户名/密码,然后点击登录。

3. 单击锁定并编辑然后点击部署。

4. 点击安装,输入路径“/tmp/web-3.0.0.war”,然后点击下一步。

5. 选择“安装此部署的应用程序”,然后单击下一步。
6.选择“DayTrade_cluster”作为目标,然后单击下一步。

7. 点完成。

8. 记得“Activate”变化。在部署摘要,点击下一步按钮,直到你看到 web application,选择 start->servicing all requests。

9. 单击 Yes 开始部署屏幕上。

1. 进入浏览器并输入网址: https://{Public IP of loadbalancer}:8081/daytrader。


2. 点击“Configuration”选项卡,然后点击“(Re)-populate DayTrader Database”。

3. 一旦完成,你会发现下面的一些配置参数。如下面的屏幕快照,点击“Update Config”。



注意:使用 putty,连接到 DBCS 实例,并在其上运行下面的命令。
sqlplus trade/trade@Daytrader:1521/PDB1.training6088431169.oraclecloud.internal delete from orderejb; alter table orderejb drop constraint FK_e09h3dfd6os5mr0l7lslki9ca ; alter table orderejb add constraint FK_e09h3dfd6os5mr0l7lslki9ca foreign key (HOLDING_HOLDINGID) references holdingejb on delete cascade;
代码相关的异常,要避免它 -我们删除所有参考订单和修改 SQL 约束。

4. 点击选项卡上的“Trading and Portfolios”,可以将新用户注册后,您还可以使用现有的用户名/密码,如“UID:0 / XXX”,然后点击登录。


5. 测试应用程序,尽量购买和出售部分股权。