26 Kasım 2015 Perşembe

wsimport ile client generate işleminde alınan hata

wsimport tool'u (ver : jaxws-ri-2.2.10) ile bir wsdl üzerinden ilgili web servisine erişebilmek için gerekli dosyaları generate etmek için komut satırından

C:\path\to\jaxws-ri-2.2.10\jaxws-ri\bin>wsimport -keep -verbose http://some_service_url:1111/service_name?WSDL -p com.cenkc.ws.service_name -d \path\to\files_to_be_generated

komutunu çalıştırdığımda aşağıdaki gibi bir hata aldım :

"[ERROR] Schema descriptor {http://some_url/service_name/schemas}SomeElementName in message part "request" is not defined and could not be bound to Java. Perhaps the schema descriptor {http://some_url/service_name/schemas}SomeElementName is not defined in the schema imported/included in the WSDL. You
 can either add such imports/includes or run wsimport and provide the schema location using -b switch.
  line 5 of http://some_service_url:1111/service_name?WSDL

Exception in thread "main" com.sun.tools.ws.wscompile.AbortException
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModelerBase.error(WSDLModelerBase.java:747)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.getJAXBType(WSDLModeler.java:1662)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.getDoclitParameters(WSDLModeler.java:1688)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.processLiteralSOAPOperation(WSDLModeler.java:790)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.processSOAPOperation(WSDLModeler.java:713)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.processPort(WSDLModeler.java:481)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.processService(WSDLModeler.java:259)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.internalBuildModel(WSDLModeler.java:231)
        at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:141)
        at com.sun.tools.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:444)
        at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:205)
        at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:183)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.sun.tools.ws.Invoker.invoke(Invoker.java:174)
        at com.sun.tools.ws.WsImport.main(WsImport.java:57)"

İlk önce hata mesajında belirtilen schema descriptor linkini (http://some_url/service_name/schemas) açmayı denedim ve başarısız oldum.

Ardından, http://some_service_url:1111/service_name?WSDL linkini açtığımda, hata açıklamasında yazan "request" kısmını arattım, aşağıdaki bölüm geldi :


Buradaki element bilgisi olan "nsx1:..." in wsdl'daki karşılığı xmlns:nsx1="http://some_url/service_name/schemas" şeklinde. Ama wsimport tool'u bu url'e erişemediği için hata alıyor olduğum konusu netleşti.

Hatayı araştırırken wsimport komutunun "-b" parametresi ile başka bir schema tanımlanarak çalıştırılabileceğini gördüm. Örnekte bu bir xsd dosyası (XML Schema Definition) idi. 

C:\path\to\jaxws-ri-2.2.10\jaxws-ri\bin>wsimport –help

Usage: wsimport [options]

where [options] include:
  -b                  specify jaxws/jaxb binding files or additional schemas
                            (Each must have its own -b)


wsimport tool'unu, WSDL içindeki ilgili xsd'nin location bilgisini () kullanacak şekilde aşağıdaki gibi düzenlediğimde sorun düzeldi : 

wsimport -keep -verbose http://some_service_url:1111/service_name?WSDL -p com.cenkc.ws.service_name -d \path\to\files_to_be_generated -b http://some_service_url:1111/service_name?WSDL/service_name.xsd

7 Ağustos 2015 Cuma

Weblogic ayaga kalkarken alinan tuhaf hata

weblogic.application.ModuleException: com.sun.jersey.spi.inject.Errors$ErrorMessagesException: com.sun.jersey.spi.inject.Errors.ErrorMessagesException: null Bu hatanın sebebi server'ın System_Out.xxxx_nohup dosyasında görünüyor aslında. Aynı Path ve MediaType'ı birden fazla aynı metod kullanamıyor. Yani; @POST @Path("/some_path") @Consumes(MediaType.APPLICATION_JSON) @Produces({MediaType.APPLICATION_JSON}) public Response falanFilan (...){...} ile @POST @Path("/some_path") @Consumes(MediaType.APPLICATION_JSON) @Produces({MediaType.APPLICATION_JSON}) public Response yalanDolan (...){...} aynı anda kullanılamıyor. Biri kaldırıldığında sorun çözülecektir. com.sun.jersey.spi.inject.Errors processErrorMessages SEVERE: The following errors and warnings have been detected with resource and/or provider classes: SEVERE: Consuming media type conflict. The resource methods public javax.ws.rs.core.Response com.cenkc.test.web.DenemeService.create(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,java.lang.String) and public javax.ws.rs.core.Response com.cenkc.test.web.DenemeService.handleData(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,java.lang.String) can consume the same media type com.sun.jersey.spi.spring.container.servlet.SpringServlet initiate SEVERE: Exception occurred when intialization com.sun.jersey.spi.inject.Errors$ErrorMessagesException at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170) at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136) at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199) at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795) at com.sun.jersey.spi.spring.container.servlet.SpringServlet.initiate(SpringServlet.java:117) at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:321) at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207) at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:376) at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:559) at javax.servlet.GenericServlet.init(GenericServlet.java:240) at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:337) at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:288) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57) at weblogic.servlet.internal.StubSecurityHelper.initServletInstance(StubSecurityHelper.java:98) at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:86) at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:71) at weblogic.servlet.internal.StubLifecycleHelper.(StubLifecycleHelper.java:57) at weblogic.servlet.internal.StubLifecycleHelper.(StubLifecycleHelper.java:31) at weblogic.servlet.internal.ServletStubImpl.initStubLifecycleHelper(ServletStubImpl.java:660) at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:600) at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1979) at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1956) at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1846) at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2876) at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1661) at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:823) at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360) at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42) at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138) at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:216) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:211) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42) at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:73) at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:24) at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:729) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42) at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:258) at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:48) at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165) at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80) at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:587) at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150) at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:116) at weblogic.deploy.internal.targetserver.operations.StartOperation.doCommit(StartOperation.java:151) at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:339) at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:846) at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1275) at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:442) at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:176) at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195) at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13) at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68) at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:548) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311) at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)

12 Şubat 2015 Perşembe

ORA-28500 hatası

Oracle Database Gateway for Teradata kullanarak Oracle 11g veritabanından Teradata veritabanına bir bağlantı oluşturduktan sonra, 11g'de aşağıdaki tns kaydı ile bir dblink oluşturduk

connect_descriptor=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host_name)(PORT=port_number))(CONNECT_DATA=(SID=gateway_sid))(HS=OK))
CREATE PUBLIC DATABASE LINK "link_to_teradata"
 CONNECT TO user_name
 IDENTIFIED BY 
 USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host_name)(PORT=port_number))(CONNECT_DATA=(SID=gateway_sid))(HS=OK))';
select atarken "date_field" alanını filtrelediğimizde 

Select
"date_field", "field_1", "field_2" --.....
from "table_name"@link_to_teradata
Where "date_field" >= to_date('2015-01-01','yyyy-mm-dd')

aşağıdaki şekilde bir hata aldık. 

ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Teradata][ODBC Teradata Driver][Teradata Database] Invalid date supplied for SM_DATA_QUALITY.DATE_TIME.  {22008,NativeErr = -2666}
ORA-02063: preceding 2 lines from SLM_TO_TERADATA

Bir kaç workaround (with clause, to_date() vs.) denedik ama hiç birinde de sonuç alamadık.

Geriye iki yöntem kalıyordu :
1)  ODI gibi bir ETL tool'u kullanarak tabloyu olduğu gibi Oracle veritabanına almak daha sonra bu tabloyu sorgulamak
2)  Yukarıdaki sorguyu TERADATA tarafında bir view'a almak ve tarih alanını STRING'e convert etmek.

Görüleceği üzere 2. yöntem daha az zahmetli ve daha esnek.

Sonuç olarak view'da tarih alanını şu şekilde yapınca sorun da düzeldi : 

CAST(CAST(date_field AS DATE FORMAT 'YYYY-MM-DD') AS CHAR(11)) date_field

tabi sorgumuzu da aşağıdaki gibi güncelledikten sonra :)

Select
"date_field", "field_1", "field_2" --.....
from "table_name"@link_to_teradata
Where to_date("date_field",'yyyy-mm-dd') >= to_date('2015-01-01','yyyy-mm-dd')

12 Mart 2014 Çarşamba

ODI 10g Scenario Mapping Query (Work Repository)

/* WORK REPOSITORY SCENARIO MAPPING */
SELECT
    DISTINCT
    ODIWD.SNP_PROJECT.PROJECT_NAME,
    ODIWD.SNP_FOLDER.FOLDER_NAME,
    ODIWD.SNP_PACKAGE.PACK_NAME,  
    ODIWD.SNP_SCEN.SCEN_NAME,
    ODIWD.SNP_SCEN.SCEN_VERSION,
    CASE
        WHEN ODIWD.SNP_SCEN_STEP.STEP_TYPE = 'VS' THEN 'Set Variable'
        WHEN ODIWD.SNP_SCEN_STEP.STEP_TYPE = 'VE' THEN 'Evaluate Variable'
        WHEN ODIWD.SNP_SCEN_STEP.STEP_TYPE = 'VP' THEN 'Populate Variable'
        WHEN ODIWD.SNP_SCEN_STEP.STEP_TYPE = 'OE' THEN 'Execute OS command'
        WHEN ODIWD.SNP_SCEN_STEP.STEP_TYPE = 'SE' THEN 'Execute Sunopsis command'
        WHEN ODIWD.SNP_SCEN_STEP.STEP_TYPE = 'V' THEN 'Refresh Variable'
        WHEN ODIWD.SNP_SCEN_STEP.STEP_TYPE = 'F' THEN 'Flow'
        WHEN ODIWD.SNP_SCEN_STEP.STEP_TYPE = 'T' THEN 'Procedure'
        WHEN ODIWD.SNP_SCEN_STEP.STEP_TYPE = 'MR' THEN 'Model Reverse'
        WHEN ODIWD.SNP_SCEN_STEP.STEP_TYPE = 'MC' THEN 'Model Check'
    END AS STEP_TYPE,
    ODIWD.SNP_SCEN_STEP.NNO,
    ODIWD.SNP_SCEN_STEP.STEP_NAME,
    ODIWD.SNP_SCEN_STEP.VAR_NAME,
    ODIWD.SNP_SOURCE_TAB.LSCHEMA_NAME AS SOURCE_SCHEMA,
    ODIWD.SNP_TABLE.TABLE_NAME AS SOURCE_TABLE,
    ODIWD.SNP_SOURCE_TAB.MOD_CODE AS SOURCE_MODEL,  
    ODIWD.SNP_POP.LSCHEMA_NAME AS TARGET_SCHEMA,
    ODIWD.SNP_POP.TABLE_NAME AS TARGET_TABLE,
    ODIWD.SNP_POP.MOD_CODE AS TARGET_MODEL,
    ODIWD.SNP_PLAN_AGENT.LAGENT_NAME,
    ODIWD.SNP_PLAN_AGENT.CONTEXT_CODE,
    ODIWD.SNP_PLAN_AGENT.S_HOUR || ':' || ODIWD.SNP_PLAN_AGENT.S_MINUTE || ':' || ODIWD.SNP_PLAN_AGENT.S_SECOND AS SCHED_TIME,
    CASE
        WHEN SNP_PLAN_AGENT.R_TIME = 1 THEN 'Infinite'
        WHEN SNP_PLAN_AGENT.R_TIME = 0 THEN 'One run'
        WHEN SNP_PLAN_AGENT.R_TIME = 1 THEN 'One repetition (two runs)' /* could be -1 */
    END AS REPEAT_TIME,
    SNP_PLAN_AGENT.S_TYPE,
    CASE
        WHEN SNP_PLAN_AGENT.S_TYPE = 'H' THEN 'Hourly'
        WHEN SNP_PLAN_AGENT.S_TYPE = 'D' THEN 'Daily'
        WHEN SNP_PLAN_AGENT.S_TYPE = 'W' THEN 'Weekly'
        WHEN SNP_PLAN_AGENT.S_TYPE = 'M' THEN 'Monthly'
        WHEN SNP_PLAN_AGENT.S_TYPE = 'Y' THEN 'Yearly'
        WHEN SNP_PLAN_AGENT.S_TYPE = 'S' THEN 'Simple (see exec.cycle)'
        ELSE 'Unknown'
    END AS SCHED_TYPE,
    R_DUR_INTERVAL,
    CASE
        WHEN SNP_PLAN_AGENT.R_INTERVAL_UNIT = 'H' THEN 'Hour(s)'
        WHEN SNP_PLAN_AGENT.R_INTERVAL_UNIT = 'M' THEN 'Minute(s)'
        WHEN SNP_PLAN_AGENT.R_INTERVAL_UNIT = 'S' THEN 'Second(s)'
    END AS INTERVAL_UNIT,
    R_DUR_CYCLE,
    R_CYCLE_UNIT
FROM ODIWD.SNP_SCEN
INNER JOIN ODIWD.SNP_PLAN_AGENT ON ODIWD.SNP_SCEN.SCEN_NAME = ODIWD.SNP_PLAN_AGENT.SCEN_NAME
                         AND ODIWD.SNP_SCEN.SCEN_VERSION = ODIWD.SNP_PLAN_AGENT.SCEN_VERSION
LEFT OUTER JOIN ODIWD.SNP_PACKAGE ON ODIWD.SNP_SCEN.I_PACKAGE = ODIWD.SNP_PACKAGE.I_PACKAGE
LEFT OUTER JOIN ODIWD.SNP_FOLDER ON ODIWD.SNP_PACKAGE.I_FOLDER = ODIWD.SNP_FOLDER.I_FOLDER
LEFT OUTER JOIN ODIWD.SNP_PROJECT ON ODIWD.SNP_FOLDER.I_PROJECT = ODIWD.SNP_PROJECT.I_PROJECT
LEFT OUTER JOIN ODIWD.SNP_SCEN_STEP ON ODIWD.SNP_SCEN.SCEN_NO = ODIWD.SNP_SCEN_STEP.SCEN_NO
LEFT OUTER JOIN ODIWD.SNP_POP ON ODIWD.SNP_SCEN_STEP.STEP_NAME = ODIWD.SNP_POP.POP_NAME
LEFT OUTER JOIN ODIWD.SNP_POP_COL ON ODIWD.SNP_POP_COL.I_POP = ODIWD.SNP_POP.I_POP
LEFT OUTER JOIN ODIWD.SNP_POP_CLAUSE ON ODIWD.SNP_POP_CLAUSE.I_POP = ODIWD.SNP_POP.I_POP
LEFT OUTER JOIN ODIWD.SNP_TXT S_TXT ON ODIWD.S_TXT.I_TXT = ODIWD.SNP_POP_CLAUSE.I_TXT_SQL
LEFT OUTER JOIN ODIWD.SNP_TXT ON ODIWD.SNP_TXT.I_TXT = ODIWD.SNP_POP_COL.I_TXT_MAP
LEFT OUTER JOIN ODIWD.SNP_SOURCE_TAB ON ODIWD.SNP_SOURCE_TAB.I_POP = ODIWD.SNP_POP.I_POP
LEFT OUTER JOIN ODIWD.SNP_TXT_CROSSR ON ODIWD.SNP_TXT_CROSSR.I_TXT = ODIWD.SNP_TXT.I_TXT
LEFT OUTER JOIN ODIWD.SNP_COL ON ODIWD.SNP_COL.I_COL = ODIWD.SNP_TXT_CROSSR.I_COL
LEFT OUTER JOIN ODIWD.SNP_TABLE ON ODIWD.SNP_TABLE.I_TABLE = ODIWD.SNP_COL.I_TABLE
WHERE 1=1
--AND SNP_PLAN_AGENT.STAT_PLAN = 'E' /* Status of planning: Enabled/Disabled */
--AND SNP_SCEN_STEP.STEP_TYPE != 'SE' /* Exclude SE-Execute Sunopsis command */
ORDER BY ODIWD.SNP_SCEN.SCEN_NAME, ODIWD.SNP_SCEN.SCEN_VERSION, ODIWD.SNP_SCEN_STEP.NNO

4 Eylül 2013 Çarşamba

ODI iInterface Mapping Query (Work Repository)

SELECT DISTINCT
       SNP_PROJECT.PROJECT_NAME AS PROJECT_NAME,
       SNP_FOLDER.FOLDER_NAME AS FOLDER_NAME,
       SNP_POP.POP_NAME AS INTERFACE_NAME,
       CASE
          WHEN SNP_POP.WSTAGE = 'E' THEN 'TABLE_TO_TABLE_INF'
          ELSE 'TEMP_INTERFACE'
       END
          AS INTERFACE_TYPE,
       SNP_POP.LSCHEMA_NAME AS TARGET_SCHEMA,
       SNP_POP.TABLE_NAME AS TARGET_TABLE,
       SNP_POP.MOD_CODE AS TARGET_MODEL,
       TARGET_MODEL.LSCHEMA_NAME AS TARGET_LSCHEMA_NAME,
       /*SNP_POP_COL.COL_NAME AS TARGET_COLUMN,
       CASE WHEN SNP_POP.WSTAGE='E'
            THEN T_COL.SOURCE_DT||' ('||T_COL.LONGC||')'
            ELSE SNP_POP_COL.SOURCE_DT||' ('||SNP_POP_COL.LONGC||')'
       END AS TRG_DATATYPE,*/
       SNP_SOURCE_TAB.LSCHEMA_NAME AS SOURCE_SCHEMA,
       SNP_TABLE.TABLE_NAME AS SOURCE_TABLE,
       SNP_SOURCE_TAB.MOD_CODE AS SOURCE_MODEL,
       SOURCE_MODEL.LSCHEMA_NAME  AS SOURCE_LSCHEMA_NAME
       /*, SNP_COL.COL_NAME AS SOURCE_COLUMN ,
       SNP_COL.SOURCE_DT||' ('||SNP_COL.LONGC||')' AS SRC_DATATYPE,
       --rowtocol('SELECT DISTINCT TXT FROM SNP_TXT WHERE I_TXT='||i_txt ) AS COLUMN_MAPPING
       SNP_TXT.TXT AS COLUMN_MAPPING*/
       -- to use without rowtocol use SNP_TXT.TXT AS COLUMN_MAPPING
       FROM SNP_PROJECT
       LEFT OUTER JOIN SNP_FOLDER ON SNP_FOLDER.I_PROJECT=SNP_PROJECT.I_PROJECT
       LEFT OUTER JOIN SNP_POP ON SNP_POP.I_FOLDER=SNP_FOLDER.I_FOLDER
       LEFT OUTER JOIN SNP_POP_COL ON SNP_POP_COL.I_POP=SNP_POP.I_POP
       LEFT OUTER JOIN SNP_POP_CLAUSE ON SNP_POP_CLAUSE.I_POP=SNP_POP.I_POP
       LEFT OUTER JOIN SNP_TXT S_TXT ON S_TXT.I_TXT=SNP_POP_CLAUSE.I_TXT_SQL
       LEFT OUTER JOIN SNP_TXT ON SNP_TXT.I_TXT= SNP_POP_COL.I_TXT_MAP
       LEFT OUTER JOIN SNP_SOURCE_TAB ON SNP_SOURCE_TAB.I_POP=SNP_POP.I_POP
       LEFT OUTER JOIN SNP_TXT_CROSSR ON SNP_TXT_CROSSR.I_TXT=SNP_TXT.I_TXT
       LEFT OUTER JOIN SNP_COL ON SNP_COL.I_COL=SNP_TXT_CROSSR.I_COL
       LEFT OUTER JOIN SNP_TABLE ON SNP_TABLE.I_TABLE= SNP_COL.I_TABLE
       LEFT OUTER JOIN SNP_MODEL TARGET_MODEL ON SNP_POP.I_MOD= TARGET_MODEL.I_MOD
       LEFT OUTER JOIN SNP_MODEL SOURCE_MODEL ON SNP_SOURCE_TAB.I_MOD= SOURCE_MODEL.I_MOD
       --LEFT OUTER JOIN SNP_COL T_COL ON T_COL.I_COL=SNP_POP_COL.I_COL
       --WHERE UPPER(SNP_TABLE.TABLE_NAME) LIKE '%TBLSERVICES%'
ORDER BY SNP_POP.POP_NAME

ODI Topology Connection Detail (Master Repository)

/* 10g MASTER REPOSITIRY TOPOLOGY MAPPING */
SELECT DISTINCT ODIM.SNP_TECHNO.TECHNO_NAME AS TECHNOLOGY,
                  ODIM.SNP_CONNECT.CON_NAME AS DATA_SERVER,
                  ODIM.SNP_CONNECT.USER_NAME AS USERNAME,
                  ODIM.SNP_CONNECT.PASS AS PASSWD,
                  ODIM.SNP_PSCHEMA.EXT_NAME AS PHYSICAL_SCHEMA,
                  ODIM.SNP_PSCHEMA.SCHEMA_NAME AS SCHEMA_NAME,
                  ODIM.SNP_PSCHEMA.WSCHEMA_NAME AS WORK_SCHEMA,
                  ODIM.SNP_CONTEXT.CONTEXT_NAME AS CONTEXT_NAME,
                  ODIM.SNP_LSCHEMA.LSCHEMA_NAME AS LOGICAL_SCHEMA,
                  ODIM.SNP_CONNECT.JAVA_DRIVER AS DRIVER_INFO,
                  ODIM.SNP_MTXT_PART.TXT AS URL
    FROM ODIM.SNP_TECHNO
         LEFT OUTER JOIN ODIM.SNP_CONNECT ON ODIM.SNP_CONNECT.I_TECHNO = ODIM.SNP_TECHNO.I_TECHNO
         LEFT OUTER JOIN ODIM.SNP_PSCHEMA ON ODIM.SNP_PSCHEMA.I_CONNECT = ODIM.SNP_CONNECT.I_CONNECT
         LEFT OUTER JOIN ODIM.SNP_PSCHEMA_CONT ON ODIM.SNP_PSCHEMA_CONT.I_PSCHEMA = ODIM.SNP_PSCHEMA.I_PSCHEMA
         LEFT OUTER JOIN ODIM.SNP_LSCHEMA ON ODIM.SNP_LSCHEMA.I_LSCHEMA = ODIM.SNP_PSCHEMA_CONT.I_LSCHEMA
         LEFT OUTER JOIN ODIM.SNP_CONTEXT ON ODIM.SNP_CONTEXT.I_CONTEXT = ODIM.SNP_PSCHEMA_CONT.I_CONTEXT
         LEFT OUTER JOIN ODIM.SNP_MTXT_PART ON ODIM.SNP_MTXT_PART.I_TXT = ODIM.SNP_CONNECT.I_TXT_JAVA_URL
   WHERE ODIM.SNP_CONNECT.CON_NAME IS NOT NULL
ORDER BY ODIM.SNP_TECHNO.TECHNO_NAME;

11g
  SELECT DISTINCT
         SNP_TECHNO.TECHNO_NAME AS TECHNOLOGY,
         SNP_CONNECT.CON_NAME AS DATA_SERVER,
         SNP_CONNECT.USER_NAME AS USERNAME,
         SNP_CONNECT.PASS AS PASSWD,
         SNP_PSCHEMA.EXT_NAME AS PHYSICAL_SCHEMA,
         SNP_PSCHEMA.SCHEMA_NAME AS SCHEMA_NAME,
         SNP_PSCHEMA.WSCHEMA_NAME AS WORK_SCHEMA,
         SNP_CONTEXT.CONTEXT_NAME AS CONTEXT_NAME,
         SNP_LSCHEMA.LSCHEMA_NAME AS LOGICAL_SCHEMA,
         SNP_CONNECT.JAVA_DRIVER AS DRIVER_INFO,
         COALESCE (SNP_MTXT_PART.TXT, DBMS_LOB.SUBSTR (SNP_MTXT.FULL_TXT, 1000, 1)) AS URL,
         SNP_CONNECT.USER_NAME,
         SNP_CONNECT.PASS
    FROM SNP_TECHNO
         LEFT OUTER JOIN SNP_CONNECT
            ON SNP_CONNECT.I_TECHNO = SNP_TECHNO.I_TECHNO
         LEFT OUTER JOIN SNP_PSCHEMA
            ON SNP_PSCHEMA.I_CONNECT = SNP_CONNECT.I_CONNECT
         LEFT OUTER JOIN SNP_PSCHEMA_CONT
            ON SNP_PSCHEMA_CONT.I_PSCHEMA = SNP_PSCHEMA.I_PSCHEMA
         LEFT OUTER JOIN SNP_LSCHEMA
            ON SNP_LSCHEMA.I_LSCHEMA = SNP_PSCHEMA_CONT.I_LSCHEMA
         LEFT OUTER JOIN SNP_CONTEXT
            ON SNP_CONTEXT.I_CONTEXT = SNP_PSCHEMA_CONT.I_CONTEXT
         LEFT OUTER JOIN SNP_MTXT_PART
            ON SNP_MTXT_PART.I_TXT = SNP_CONNECT.I_TXT_JAVA_URL
         LEFT OUTER JOIN SNP_MTXT
            ON SNP_MTXT.I_TXT = SNP_CONNECT.I_TXT_JAVA_URL
   WHERE SNP_CONNECT.CON_NAME IS NOT NULL
ORDER BY SNP_TECHNO.TECHNO_NAME;

Reference : http://odiexperts.com/odi-topology-connection-detail/



1 Mart 2010 Pazartesi

seam_gen için ufak bir bug-fix

seam_gen ile otomatik entity oluşturduktan sonra, liste görünümünden "edit" ile kayıt detayına geçildiğinde,
ilişkili entity/entityler varsa ilgili fieldları rich:tabPanel komponentinde birer tab olarak ekliyor.
birden fazla ilişkili entity olduğunda bunların her biri için oluşturduğu "change" (null ise select) butonlarının id değerlerine aşağıdak görebileceğiniz şekilde tek bir atama yapıyor, ki bu da sorun oluşturuyor.
hata kodu şu şekilde :

"java.lang.IllegalStateException: duplicate Id for a component selectParent"


çözümü aşağıdaki gibi imiş :

/(seam_klasoru)/seam-gen/view/
altındaki "edit.xhtml.ftl" dosyasında

‹s:button id="${'#'}{${homeName}.instance.${property.name} != null ? 'changeParent' : 'selectParent'}" value="${'#'}{${homeName}.instance.${property.name} != null ? 'Change' : 'Select'} ${property.name}"
view="/${parentPageName}List.xhtml"›

satırını

‹s:button id="${'#'}{${homeName}.instance.${property.name} != null ? 'changeParent_${property.name}' : 'selectParent_${property.name}'}" value="${'#'}{${homeName}.instance.${property.name} != null ? 'Change' : 'Select'} ${property.name}"
view="/${parentPageName}List.xhtml"›

şeklinde değiştirin.