sql >> データベース >  >> RDS >> Oracle

ADFとEBSの統合

    ADFページをEBSおよびセッション管理と統合する方法のソリューションを入手しました。

    以下のリンクは私にとって便利です。

    http://mistech.pixnet.net/blog/post/365709524-adf-%E6%95%B4%E5%90%88%E6%96%BC -%28-integrate-%29-oracle-ebs-r12

    または、以下の手順で詳細を確認してください。

    ステップ01: Javaクラスを作成します。Javaクラス:ConnectionProvide、EBizUti、EBSWrapperFilter、Java Bean:UserInfo

    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サービス->データソースビューに入ることができます:EBSDataSource JNDI:jdbc / TEST32、そしてその1つのホストにデプロイすることを学ぶことができます: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.dbc EBS APPサーバーパスで取得できます。サーバーID: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: ビューを作成します:adfc-config.xmlにuserInfo.jspxを作成し、マネージドBeanを設定します

    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_USERINFOProperties-タイプ外部ADFアプリケーションWebHTML-HTML呼び出しGWY.jsp?targetPage =faces / userInfo

    ステップ02: 責任:機能管理者の設定a。コアサービス→プロファイル→コード:FND_EXTERNAL_ADF_URL→ゴブ。次に、外部ADFアプリケーションのURLをクリックして、[プロファイル値の定義]を押します

    a。 「プロファイル値の定義」→「責任」をクリックします。 Responsibility&Valuecを選択します。値:次のようなweblogicパスのゲストプログラム: http:// lnxap104:7214 / LAB_EBS-ViewController-context-root / d。更新を押す



    1. MMOゲームとデータベース設計

    2. FUNCTIONSUMが存在しません

    3. EXTRACT()の例– MySQL

    4. PHP 5.4 PDOは、古い安全でない認証を使用してMySQL4.1以降に接続できませんでした