ADF 与 EBS 集成
ADF integration with EBS
我在 Oracle adf 中开发了一个应用程序,现在我想将该应用程序与电子商务套件集成。所以请让我知道有人知道这个过程吗?
取决于您要创建的集成类型 - 一些基础知识:https://blogs.oracle.com/jruiz/entry/adf_and_oracle_e_business2
我得到了如何将 ADF 页面与 EBS 以及会话管理集成的解决方案。
下面的link对我有用。
或执行以下步骤以获得更多说明。
步骤 01: 创建 java 类。
Java Class:ConnectionProvide, EBizUti, EBSWrapperFilter,
Java Bean:用户信息
1. ConnectionProvider.java
package com.oracle.view;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class ConnectionProvider {
private static DataSource ebsDS = null;
static {
try {
Context ctx = new InitialContext();
ebsDS = (DataSource) ctx.lookup("jdbc/TEST32");
// your datasource jndi name as defined during configuration
if (ctx != null)
ctx.close();
} catch (Exception e) {
throw new RuntimeException(e);
// means jndi setup is not correct or doesn't exist
}
}
private ConnectionProvider() {
super();
}
public static Connection getConnection() throws SQLException {
if (ebsDS == null)
throw new IllegalStateException(
"AppsDatasource is not properly initialized or available");
return ebsDS.getConnection();
}
}
PS:在EBS环境jdbc模式下获取数据库连接,可以进入weblogic Services->Data Sources视图,
如:EBSDataSource JNDI: jdbc / TEST32, 可以学习部署到那一台主机:oacore_cluster
2。 EBizUtil.java
package com.oracle.view;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import oracle.apps.fnd.ext.common.EBiz;
public class EBizUtil {
public EBizUtil() {
super();
}
private static final Logger logger = Logger.getLogger(EBizUtil.class.getName());
private static EBiz INSTANCE = null;
static {
Connection connection = null;
try {
connection = ConnectionProvider.getConnection();
// DO NOT hard code applServerID for a real application
// Get applServerID as CONTEXT-PARAM from web.xml or elsewhere
INSTANCE = new EBiz(connection, "F1CB87199593E5F4E0431F030A0AD0AB31310251131793525291714692481335");
} catch (SQLException e) {
logger.log(Level.SEVERE, "SQLException while creating EBiz instance", e);
throw new RuntimeException(e);
} catch (Exception e) {
logger.log(Level.SEVERE, "Exception while creating EBiz instance", e);
throw new RuntimeException(e);
} finally {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
}
public static EBiz getEBizInstance() {
return INSTANCE;
}
}
PS:APPL_SERVER_ID可以在$INST_TOP/appl/fnd/12.0.0/secure/TEST32.dbcEBS APP Server路径下获取
服务器编号:
APPL_SERVER_ID = F1CB87199593E5F4E0431F030A0AD0AB31310251131793525291714692481335
3。 EBSWrapperFilter.java
package com.oracle.view;
import java.io.IOException;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import oracle.apps.fnd.ext.common.AppsRequestWrapper;
import oracle.apps.fnd.ext.common.AppsRequestWrapper.WrapperException;
public class EBSWrapperFilter implements Filter {
public EBSWrapperFilter() {
super();
}
private static final Logger logger = Logger.getLogger(EBSWrapperFilter.class.getName());
public void init(FilterConfig filterConfig) {
logger.info("Filter initialized ");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException {
AppsRequestWrapper wrapper = null;
logger.info("-current URI =" + ((HttpServletRequest)request).getRequestURI());
try {
wrapper = new AppsRequestWrapper((HttpServletRequest)request, (HttpServletResponse)response, ConnectionProvider.getConnection(), EBizUtil.getEBizInstance());
} catch (WrapperException e2) {
logger.log(Level.SEVERE, "WrapperException error encountered ", e2);
throw new ServletException(e2);
} catch (SQLException e2) {
logger.log(Level.SEVERE, "SQLException error encountered ", e2);
throw new ServletException(e2);
}
try {
logger.info("Created AppsRequestWrapper object." + " Continuing the filter chain.");
chain.doFilter(wrapper, response);
logger.info("- the filter chain ends");
} finally {
//AppsRequestWrapper caches a connection internally.
//AppsRequestWrapper.getConnection()--returns this connection this connection can be used in doGet()/doPost() service layer
//whenever our application requires a connection in order to service the current request.
//When AppsRequestWrapper instance is in use, this connection should not be closed by other code.
//At this point, we are done using AppsRequestWrapper instance so, as good practice, we are going to close (release) this connection now.
if (wrapper != null) {
try {
logger.info("- releasing the connection attached to the" + " current AppsRequestWrapper instance ");
wrapper.getConnection().close();
} catch (SQLException e3) {
logger.log(Level.WARNING, "SQLException error while closing connection--", e3);
throw new ServletException(e3);
}
}
wrapper = null;
}
}
public void destroy() {
logger.info("Filter destroyed ");
}
}
4。 UserInfo.java
package com.oracle.bean;
import java.util.Map;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import oracle.apps.fnd.ext.common.AppsRequestWrapper;
import oracle.apps.fnd.ext.common.Session;
public class UserInfo {
private String user;
private String userInfo;
public UserInfo() {
super();
}
public void setUser(String user) {
this.user = user;
}
public String getUser() {
return user;
}
public void beforePhase(PhaseEvent phaseEvent) {
// Add event code here...
AppsRequestWrapper wrappedRequest =
(AppsRequestWrapper)FacesContext.getCurrentInstance().getExternalContext().getRequest();
Session session = wrappedRequest.getAppsSession();
setUser(session.getUserName());
Map columns = session.getInfo();
StringBuffer temp = new StringBuffer();
temp.append("<table>");
for (Object key : columns.keySet()) {
temp.append("<tr>");
temp.append("<td>");
temp.append(key);
temp.append("</td>");
temp.append("<td>");
temp.append(columns.get(key));
temp.append("</td>");
temp.append("</tr>");
}
temp.append("</table>");
setUserInfo(temp.toString());
}
public void setUserInfo(String userInfo) {
this.userInfo = userInfo;
}
public String getUserInfo() {
return userInfo;
}
}
步骤 02: 创建视图: userInfo.jspx in adfc-config.xml 并设置 Managed Beans
Layout: PageGroupLayout: layout = vertical
OutPutText: value = "Hello # {pageFlowScope.userInfoBean.user} !!"
InlineStyle = "font-size: medium; color: Red;"
Separator
OutPutText: value = "# User Info: <br> # {pageFlowScope.userInfoBean.userInfo}"
Escape = "false" inlineStyle = "font-size: medium;"
Oracle EBS 上的设置:
步骤 01: 设置功能:菜单:职责:
函数 WEI_ADFLAB_USERINFO
属性类型的外部 ADF 应用程序
WebHTML-HTML调用GWY.jsp?targetPage=faces/userInfo
步骤 02: 职责:职能管理员设置
一种。核心服务 → 配置文件 → 代码:FND_EXTERNAL_ADF_URL → 前往
b.然后单击外部 ADF 应用程序 URL 并按定义配置文件值
一个。单击定义配置文件值 → 责任
b. Select 责任与价值
C。取值:weblogic路径下的guest程序,如:http://lnxap104:7214/LAB_EBS-ViewController-context-root/
d.按更新
我在 Oracle adf 中开发了一个应用程序,现在我想将该应用程序与电子商务套件集成。所以请让我知道有人知道这个过程吗?
取决于您要创建的集成类型 - 一些基础知识:https://blogs.oracle.com/jruiz/entry/adf_and_oracle_e_business2
我得到了如何将 ADF 页面与 EBS 以及会话管理集成的解决方案。
下面的link对我有用。
或执行以下步骤以获得更多说明。
步骤 01: 创建 java 类。 Java Class:ConnectionProvide, EBizUti, EBSWrapperFilter, Java Bean:用户信息
1. ConnectionProvider.java
package com.oracle.view;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class ConnectionProvider {
private static DataSource ebsDS = null;
static {
try {
Context ctx = new InitialContext();
ebsDS = (DataSource) ctx.lookup("jdbc/TEST32");
// your datasource jndi name as defined during configuration
if (ctx != null)
ctx.close();
} catch (Exception e) {
throw new RuntimeException(e);
// means jndi setup is not correct or doesn't exist
}
}
private ConnectionProvider() {
super();
}
public static Connection getConnection() throws SQLException {
if (ebsDS == null)
throw new IllegalStateException(
"AppsDatasource is not properly initialized or available");
return ebsDS.getConnection();
}
}
PS:在EBS环境jdbc模式下获取数据库连接,可以进入weblogic Services->Data Sources视图, 如:EBSDataSource JNDI: jdbc / TEST32, 可以学习部署到那一台主机:oacore_cluster
2。 EBizUtil.java
package com.oracle.view;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import oracle.apps.fnd.ext.common.EBiz;
public class EBizUtil {
public EBizUtil() {
super();
}
private static final Logger logger = Logger.getLogger(EBizUtil.class.getName());
private static EBiz INSTANCE = null;
static {
Connection connection = null;
try {
connection = ConnectionProvider.getConnection();
// DO NOT hard code applServerID for a real application
// Get applServerID as CONTEXT-PARAM from web.xml or elsewhere
INSTANCE = new EBiz(connection, "F1CB87199593E5F4E0431F030A0AD0AB31310251131793525291714692481335");
} catch (SQLException e) {
logger.log(Level.SEVERE, "SQLException while creating EBiz instance", e);
throw new RuntimeException(e);
} catch (Exception e) {
logger.log(Level.SEVERE, "Exception while creating EBiz instance", e);
throw new RuntimeException(e);
} finally {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
}
public static EBiz getEBizInstance() {
return INSTANCE;
}
}
PS:APPL_SERVER_ID可以在$INST_TOP/appl/fnd/12.0.0/secure/TEST32.dbcEBS APP Server路径下获取 服务器编号: APPL_SERVER_ID = F1CB87199593E5F4E0431F030A0AD0AB31310251131793525291714692481335
3。 EBSWrapperFilter.java
package com.oracle.view;
import java.io.IOException;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import oracle.apps.fnd.ext.common.AppsRequestWrapper;
import oracle.apps.fnd.ext.common.AppsRequestWrapper.WrapperException;
public class EBSWrapperFilter implements Filter {
public EBSWrapperFilter() {
super();
}
private static final Logger logger = Logger.getLogger(EBSWrapperFilter.class.getName());
public void init(FilterConfig filterConfig) {
logger.info("Filter initialized ");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException {
AppsRequestWrapper wrapper = null;
logger.info("-current URI =" + ((HttpServletRequest)request).getRequestURI());
try {
wrapper = new AppsRequestWrapper((HttpServletRequest)request, (HttpServletResponse)response, ConnectionProvider.getConnection(), EBizUtil.getEBizInstance());
} catch (WrapperException e2) {
logger.log(Level.SEVERE, "WrapperException error encountered ", e2);
throw new ServletException(e2);
} catch (SQLException e2) {
logger.log(Level.SEVERE, "SQLException error encountered ", e2);
throw new ServletException(e2);
}
try {
logger.info("Created AppsRequestWrapper object." + " Continuing the filter chain.");
chain.doFilter(wrapper, response);
logger.info("- the filter chain ends");
} finally {
//AppsRequestWrapper caches a connection internally.
//AppsRequestWrapper.getConnection()--returns this connection this connection can be used in doGet()/doPost() service layer
//whenever our application requires a connection in order to service the current request.
//When AppsRequestWrapper instance is in use, this connection should not be closed by other code.
//At this point, we are done using AppsRequestWrapper instance so, as good practice, we are going to close (release) this connection now.
if (wrapper != null) {
try {
logger.info("- releasing the connection attached to the" + " current AppsRequestWrapper instance ");
wrapper.getConnection().close();
} catch (SQLException e3) {
logger.log(Level.WARNING, "SQLException error while closing connection--", e3);
throw new ServletException(e3);
}
}
wrapper = null;
}
}
public void destroy() {
logger.info("Filter destroyed ");
}
}
4。 UserInfo.java
package com.oracle.bean;
import java.util.Map;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import oracle.apps.fnd.ext.common.AppsRequestWrapper;
import oracle.apps.fnd.ext.common.Session;
public class UserInfo {
private String user;
private String userInfo;
public UserInfo() {
super();
}
public void setUser(String user) {
this.user = user;
}
public String getUser() {
return user;
}
public void beforePhase(PhaseEvent phaseEvent) {
// Add event code here...
AppsRequestWrapper wrappedRequest =
(AppsRequestWrapper)FacesContext.getCurrentInstance().getExternalContext().getRequest();
Session session = wrappedRequest.getAppsSession();
setUser(session.getUserName());
Map columns = session.getInfo();
StringBuffer temp = new StringBuffer();
temp.append("<table>");
for (Object key : columns.keySet()) {
temp.append("<tr>");
temp.append("<td>");
temp.append(key);
temp.append("</td>");
temp.append("<td>");
temp.append(columns.get(key));
temp.append("</td>");
temp.append("</tr>");
}
temp.append("</table>");
setUserInfo(temp.toString());
}
public void setUserInfo(String userInfo) {
this.userInfo = userInfo;
}
public String getUserInfo() {
return userInfo;
}
}
步骤 02: 创建视图: userInfo.jspx in adfc-config.xml 并设置 Managed Beans
Layout: PageGroupLayout: layout = vertical
OutPutText: value = "Hello # {pageFlowScope.userInfoBean.user} !!"
InlineStyle = "font-size: medium; color: Red;"
Separator
OutPutText: value = "# User Info: <br> # {pageFlowScope.userInfoBean.userInfo}"
Escape = "false" inlineStyle = "font-size: medium;"
Oracle EBS 上的设置:
步骤 01: 设置功能:菜单:职责: 函数 WEI_ADFLAB_USERINFO 属性类型的外部 ADF 应用程序 WebHTML-HTML调用GWY.jsp?targetPage=faces/userInfo
步骤 02: 职责:职能管理员设置 一种。核心服务 → 配置文件 → 代码:FND_EXTERNAL_ADF_URL → 前往 b.然后单击外部 ADF 应用程序 URL 并按定义配置文件值
一个。单击定义配置文件值 → 责任 b. Select 责任与价值 C。取值:weblogic路径下的guest程序,如:http://lnxap104:7214/LAB_EBS-ViewController-context-root/ d.按更新