<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7061548</id><updated>2011-10-09T23:29:33.804+02:00</updated><title type='text'>J2EE development with Oracle products</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://j2ee-oracle.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7061548.post-113413914410852201</id><published>2005-12-09T15:22:00.000+01:00</published><updated>2007-03-29T20:25:36.630+02:00</updated><title type='text'>J2EE - Oracle Enterprise Users Security</title><content type='html'>Oracle Enterprise Users Security make it possible to combine SSO, JAAS, JDBC-Connection Pooling (J2EE-DataSouce) and VPD (Row Level Security) in conjunction with Proxy Authentication and single stored LDAP Users/Roles.&lt;br /&gt;&lt;br /&gt;Depending of the securit requirements and used product or feature stack, many different configurations possible. Following I will demonstrate the scenario how to use Oracle Enterprise Users Security with connection pooling in an Java EE environment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Suppose you have 3 user types:&lt;br /&gt;1. &lt;span style="FONT-WEIGHT: bold"&gt;Enterprise User&lt;/span&gt;: The LDAP users which connect to the DB without any DB resources (No DB create user command is required!)&lt;br /&gt;2. &lt;span style="FONT-WEIGHT: bold"&gt;Global Schema User&lt;/span&gt;: The DB-Schema how the enterprise user is automaticly mapped to.&lt;br /&gt;3. &lt;span style="FONT-WEIGHT: bold"&gt;JDBC Pool User&lt;/span&gt;: The user used to create the connection pool with only connect rights. That user has no resource or other permissons.&lt;br /&gt;&lt;br /&gt;Required steps:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; Create the LDAP V3 User Structure with any LDAP Tool or command&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; &lt;a href="http://www.oracle.com/technology/deploy/security/db_security/howtos/eus-how-to.html"&gt;Use the Oracle Enterprise Security Manager and Map the LDAP Roles to DB Roles &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3.&lt;/strong&gt; create the oracle pool user: create jdbcpooluser identified by MyPassword123&lt;br /&gt;&lt;strong&gt;4.&lt;/strong&gt; grant connect to jdbcpooluser&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5.&lt;/strong&gt; Permit the Global-Schema user to connect through the jdbc pool user: alter user global_schema grant connect through jdbcpooluser&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6.&lt;/strong&gt; On each connect swich the jdbc connection from the pool to the LDAP user:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;properties.put(oraConnection.PROXY_DISTINGUISHED_NAME, username);&lt;br /&gt;oraConnection.openProxySession(OracleConnection.PROXYTYPE_DISTINGUISHED_NAME,´properties); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Within Springframwork you can overwrite the doGetConnection methode of UserCredentialsDataSourceAdapter class to get the connection hook before Sring makes any DB access.&lt;br /&gt;&lt;br /&gt;To establish this inside a JSF-Application you must overwrite the SpringPhaseListener to bound the principal to the current Thread:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;FacesContext fc = FacesContext.getCurrentInstance().getExternalContext(). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Principal j2eePrincipal = fc.getUserPrincipal(); // Bound the context to the current thread with your helper class in usage of the InheritableThreadLocal static variable BmaierContextHolder.createContext(j2eePrincipal);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;Afterward you should overwrite the methode &lt;span style="font-family:courier new;"&gt;doGetConnection&lt;/span&gt; of &lt;span style="font-family:courier new;"&gt;UserCredentialsDataSourceAdapter&lt;/span&gt; class as followed:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;protected Connection doGetConnection(String username, String password) throws SQLException { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Connection connection = getTargetDataSource().getConnection(username, password); ... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;if(connection instanceof oracle.jdbc.OracleConnection){ BmaierSecurityContext sc = BmaierSecurityContextHolder.getNgcmSecurityContext();&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;username = sc.getPrincipal().getName(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;// we grant DB-proxy without explicit password delivery - make SSO possible!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;password = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;OracleConnection oc = (OracleConnection)connection;&lt;br /&gt;properties.put(oraConnection.PROXY_DISTINGUISHED_NAME, username);&lt;br /&gt;oraConnection.openProxySession(OracleConnection.PROXYTYPE_DISTINGUISHED_NAME, properties);&lt;br /&gt;&lt;br /&gt;return oraConnection;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;This make it possible to use J2EE/JAAS-Authentication in conjunction with secured and pooled database connections.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-113413914410852201?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.oracle.com/oramag/oracle/02-may/o32security.html' title='J2EE - Oracle Enterprise Users Security'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/113413914410852201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/113413914410852201'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/12/j2ee-oracle-enterprise-users-security.html' title='J2EE - Oracle Enterprise Users Security'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-112611232912566402</id><published>2005-09-07T18:12:00.000+02:00</published><updated>2005-09-08T16:02:49.066+02:00</updated><title type='text'>BPEL Binary FileAdapter</title><content type='html'>within Oracle BPEL you have the choice to interprete file data as XML stream or as binary data. In the case of binary data the imput type will be a base64 encoded string representation. To decode the Base64 String you can use following java snipped:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  CubeDOMElement doc = (CubeDOMElement)getVariableData("myVariable", "opaque","/ns2:opaqueElement");&lt;br /&gt;  String str = (String)doc.getData();&lt;br /&gt;  byte[] buf = new sun.misc.BASE64Decoder().decodeBuffer(str);&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-112611232912566402?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112611232912566402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112611232912566402'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/09/bpel-binary-fileadapter.html' title='BPEL Binary FileAdapter'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-112444033865215561</id><published>2005-08-19T10:28:00.000+02:00</published><updated>2005-08-19T18:17:50.203+02:00</updated><title type='text'>Print BPEL Variable to Stdout</title><content type='html'>To trace BPEL Variables you can use the java task:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;bpelx:exec&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CubeDOMElement element = (CubeDOMElement)&lt;/strong&gt;getVariableData ("MyVariable", "payload","/ns2:myData");&lt;br /&gt;&lt;br /&gt;System.out.println(&lt;strong&gt;doc.asXML()&lt;/strong&gt;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/bpelx:exec&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I use following command to make the output visible:&lt;br /&gt;tail -f C:\%ORACLE_HOME%\opmn\logs\OraBPEL~OC4J_BPEL~default_island~1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-112444033865215561?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112444033865215561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112444033865215561'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/08/print-bpel-variable-to-stdout.html' title='Print BPEL Variable to Stdout'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-112427955345465622</id><published>2005-08-17T13:28:00.000+02:00</published><updated>2005-08-17T13:52:33.460+02:00</updated><title type='text'>Deploy additional BPEL Process Archives</title><content type='html'>It's a normal way to structure and separate java code from BPEL project. To deploy this dependend JAR-Archives automatically with your BPEL-Project, you must create the following Directory structure within your BPEL Project:&lt;br /&gt; &lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;- BPEL-INF&lt;/td&gt;&lt;td&gt;- classes&lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;                &lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;- lib &lt;td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt; &lt;/tr&gt;&lt;/table&gt;&lt;/strong&gt;&lt;/blockquote&gt;and copy the required jar archives or classes to that directories.&lt;br /&gt;&lt;br /&gt;However, while developing with JDev, you get an compile error as long as you don't create a deployment-dependency to a the jar deployment profile of the other project. Hint: this dependency will not be evaluated from the BPEL deployment process!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-112427955345465622?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112427955345465622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112427955345465622'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/08/deploy-additional-bpel-process.html' title='Deploy additional BPEL Process Archives'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-112427798237763200</id><published>2005-08-17T13:13:00.000+02:00</published><updated>2005-08-17T13:26:22.383+02:00</updated><title type='text'>Output BPEL-Variable to OutputStream</title><content type='html'>Here is an example to write any BPEL-Variable to System.out or any other stream:&lt;br /&gt;&lt;br /&gt;&amp;lt;bpelx:exec import="org.w3c.dom.*"/&amp;gt;&lt;br /&gt;&amp;lt;bpelx:exec import="javax.xml.parsers.*"/&amp;gt;&lt;br /&gt;&amp;lt;bpelx:exec import="javax.xml.transform.*"/&amp;gt;&lt;br /&gt;&amp;lt;bpelx:exec import="javax.xml.transform.dom.*"/&amp;gt;&lt;br /&gt;&amp;lt;bpelx:exec import="javax.xml.transform.stream.*"/&amp;gt;&lt;br /&gt;&lt;br /&gt;TransformerFactory transformerFactory = TransformerFactory.newInstance();&lt;br /&gt;Transformer transformer= transformerFactory.newTransformer();&lt;br /&gt;PrintStream outStream = System.out;&lt;br /&gt;Result output = new StreamResult(outStream);&lt;br /&gt;DOMSource source = new DOMSource((org.w3c.dom.Node) getVariableData("ReceiveFromRMRFileEvent_Read_InputVariable","RMR"));&lt;br /&gt;&lt;br /&gt;transformer.transform(source,output);&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-112427798237763200?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112427798237763200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112427798237763200'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/08/output-bpel-variable-to-outputstream.html' title='Output BPEL-Variable to OutputStream'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-112427570094594768</id><published>2005-08-17T12:43:00.000+02:00</published><updated>2005-08-17T12:58:44.030+02:00</updated><title type='text'>BPEL: User Defined Preferences</title><content type='html'>Oracle' BPEL deployment descriptor bpel.xml includes the undocumented section "preferences" to configure user defined properties. The generic BPEL Administration console BPELConsole allow the admistration of all variables at runtime without redeployment.&lt;br /&gt;Sample:&lt;br /&gt;&amp;lt;BPELSuitcase&amp;gt;&lt;br /&gt;&amp;lt;BPELProcess id="MyProzess" src="myProzess.bpel"&amp;gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;preferences&amp;gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;property name="myTempDir"&amp;gt;c:\temp&amp;lt;/property &amp;gt; &amp;lt;/preferences&amp;gt;&lt;br /&gt;&lt;/strong&gt;&amp;lt;/BPELProcess&amp;gt;&lt;br /&gt;&amp;lt;/BPELSuitcase&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Attention: the position of the preference section is very important. It must be the first element after the BPELProcess tag to work correctly.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;There are two build-in functions to read this properties:&lt;br /&gt;ora:getPreference(String name); in each xml expression andgetPreference in the java inline section&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-112427570094594768?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112427570094594768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112427570094594768'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/08/bpel-user-defined-preferences.html' title='BPEL: User Defined Preferences'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-112126646469809002</id><published>2005-07-13T16:26:00.000+02:00</published><updated>2005-07-13T17:17:23.250+02:00</updated><title type='text'>WISIF - BPEL Java Binding Error</title><content type='html'>Within &lt;a href="http://www.orablogs.com/reynolds/archives/000611.html"&gt;WISIF Java Binding&lt;/a&gt; you get properly an compile error for methode binding without paramters (eg. public Boolean ping();) like following:&lt;br /&gt;&lt;br /&gt;[Error ORABPEL-10902]: compilation failed [Description]: in "bpel.xml", XML parsing failed because "notification operation not supported.In WSDL at MyService.wsdl", operation "ping" of portType "{http://xmlns.xxx.com/ch/rule/service}RLPortType" is a notification operation (The endpoint sends a message), which is not supported in this version. See chapter 2.4 of WSDL spec 1.1.Make sure the operation is "one-way" type or "request-response" type.". [Potential fix]: n/a.&lt;br /&gt;&lt;br /&gt;To solve this problem you must define an message for empty parameters within portType section:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;message name="myPingRequest"&amp;gt; &amp;lt;/message&amp;gt; &lt;/b&gt;&lt;br /&gt; &amp;lt;message name="myPingResponse"&amp;gt; &lt;br /&gt; &amp;lt;part name="pingOutput" type="xsd:boolean"/&amp;gt; &lt;br /&gt;&amp;lt;/message&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;portType name="myPortType"&amp;gt;&lt;br /&gt; &amp;lt;operation name="ping"&amp;gt; &lt;b&gt;&lt;br /&gt;  &amp;lt;input name="myPingRequest" message="tns:myPingRequest"/&amp;gt; &lt;/b&gt;&lt;br /&gt;  &amp;lt;output name="myPingResponse" message="tns:myPingResponse"/&amp;gt;&lt;br /&gt; &amp;lt;/operation&amp;gt;&lt;br /&gt;&amp;lt;/portType&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-112126646469809002?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112126646469809002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112126646469809002'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/07/wisif-bpel-java-binding-error.html' title='WISIF - BPEL Java Binding Error'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-112072209487531741</id><published>2005-07-07T09:37:00.000+02:00</published><updated>2005-07-13T18:27:03.896+02:00</updated><title type='text'>Oracle Business Rule Engine - JSR 94</title><content type='html'>Oracle offers a new &lt;a href="http://www.oracle.com/technology/products/ias/business_rules/index.html"&gt;Java based rule engine&lt;/a&gt; based on the JSR-94. Last view days I have the chance to test the rule enigin within an BPEL project to solve dynamic and high performance object manipulation requirements.&lt;br /&gt;Now I'm very inspired about the performance and the ease of use. The main reason of this is the established Rule syntax like Java programming language. and the possiblility to mix Java objects and Java code with Rule RL without restrictions. This make it easy to integrate rules in Java code and manipulate or make dessisions depending of the current program status.&lt;br /&gt;&lt;br /&gt;However, the web based rule author is currently in beta status and not realy usfull for complex rules. So I recommend to write your rule in the RL-Syntax and load the rules from file instead repository usage. This means you can omit the rule generation call java methode ruleSession.generateRL( props ) from the XML-Repository. Instead this use simple file loading of your own RL-Syntax file.&lt;br /&gt;&lt;br /&gt;Now, have fun with Oracle Business Rules!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-112072209487531741?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112072209487531741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/112072209487531741'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/07/oracle-business-rule-engine-jsr-94.html' title='Oracle Business Rule Engine - JSR 94'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-111883754834621853</id><published>2005-06-15T14:03:00.000+02:00</published><updated>2005-06-15T14:12:28.350+02:00</updated><title type='text'>Change XSLT engine within BPEL</title><content type='html'>I heard Oracle XDK XSLT engine should be faster than Apache XALAN engine.  If you which, you can change the XSLT engine with the &lt;strong&gt;xmlns:ora namespace &lt;/strong&gt;declaration in your BPEL process XML declaration as following:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Change &lt;strong&gt;xmlns:ora&lt;/strong&gt; to &lt;strong&gt;xmlns:ora=&lt;/strong&gt;&lt;a class="moz-txt-link-rfc2396E" href="http://schemas.oracle.com/bpel/extension/xpath/function/xdk"&gt;&lt;strong&gt;"http://schemas.oracle.com/bpel/extension/xpath/function/xdk"&lt;/strong&gt;&lt;/a&gt; in the bpel &lt;process&gt;....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-111883754834621853?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/111883754834621853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/111883754834621853'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/06/change-xslt-engine-within-bpel.html' title='Change XSLT engine within BPEL'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-111478598735734078</id><published>2005-04-29T13:56:00.000+02:00</published><updated>2005-04-29T16:47:06.756+02:00</updated><title type='text'>ContextRoot JSF</title><content type='html'>How to get the ContextRoot in an JSF environment: #{&lt;strong&gt;facesContext.externalContext.requestContextPath&lt;/strong&gt;} in my configuration"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-111478598735734078?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/111478598735734078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/111478598735734078'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/04/contextroot-jsf.html' title='ContextRoot JSF'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-110984858022791994</id><published>2005-03-03T12:06:00.000+01:00</published><updated>2005-03-03T12:16:20.236+01:00</updated><title type='text'>UIX 2.2.x can't handle Struts  Tags</title><content type='html'>The &lt;strong&gt;&lt;global-forwards&gt;&lt;/strong&gt; could not be used in conjunction with uix:struts. This is founded in Struts-TagLib handling. All global-forward tags are bounded at rendering time to the link (Macro funktionality) and not while runtime like &lt;action&gt; elements (/save.do).&lt;br /&gt;A good practice with and without UIX is the usage  of the &lt;action&gt; element with a simple forwad attribute instead of &lt;global-forwards&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-110984858022791994?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110984858022791994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110984858022791994'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/03/uix-22x-cant-handle-struts-tags.html' title='UIX 2.2.x can&apos;t handle Struts &lt;global-forwards&gt; Tags'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-110595978538489520</id><published>2005-01-17T11:23:00.000+01:00</published><updated>2005-03-03T11:58:48.576+01:00</updated><title type='text'>OC4J Debuglevel</title><content type='html'>&lt;p&gt;-&lt;strong&gt;verbosity&lt;/strong&gt; is my favorite OC4J startparameter to get OC4J debug output. The range is defined from 1-10:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;$JAVA_HOME/java -jar oc4j.jar -verbosity 10&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Today I need a additional parameter to get more information about the used DataSource:&lt;br /&gt;&lt;br /&gt;java -Ddatasource.verbose=true -Dhttp.session.debug=true -jar oc4j.jar -verbosity &lt;/p&gt;&lt;p&gt;HTTP Debugging&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;http.session.debug&lt;/strong&gt;  = Provides information about HTTP session events&lt;/li&gt;&lt;li&gt;&lt;strong&gt;http.cluster.debug&lt;/strong&gt; = Provides information about HTTP clustering events&lt;/li&gt;&lt;li&gt;&lt;strong&gt;http.error.debug&lt;/strong&gt; = Prints all HTTP errors &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;JDBC Debugging&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;datasource.verbose&lt;/strong&gt; = Provides verbose information on creation of data source and connections using Data Sources and connections released to the pool, etc,&lt;/li&gt;&lt;li&gt;&lt;strong&gt;jdbc.debug&lt;/strong&gt; = Provides very verbose information when JDBC calls are made&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;EJB Debugging&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;ejb.cluster.debug&lt;/strong&gt; = Turns on EJB clustering debug messages&lt;/li&gt;&lt;li&gt;&lt;strong&gt;transaction.debug&lt;/strong&gt; = Provides debug information on transactions, useful for JTA debugging&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;RMI Debugging &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;rmi.debug&lt;/strong&gt; = Prints RMI debug information&lt;/li&gt;&lt;li&gt;&lt;strong&gt;rmi.verbose&lt;/strong&gt; = Provides very verbose information on RMI callsJMS Debugging&lt;/li&gt;&lt;li&gt;&lt;strong&gt;jms.debug&lt;/strong&gt; = Prints JMS debug information&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/tech/java/oc4j/htdocs/oc4j-logging-debugging-technote.html"&gt;http://www.oracle.com/technology/tech/java/oc4j/htdocs/oc4j-logging-debugging-technote.html&lt;/a&gt; &lt;/li&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-110595978538489520?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110595978538489520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110595978538489520'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/01/oc4j-debuglevel.html' title='OC4J Debuglevel'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-110560898484898091</id><published>2005-01-13T10:10:00.000+01:00</published><updated>2005-01-13T16:20:29.286+01:00</updated><title type='text'>Get the serialized ADF-RowKey in uiXML</title><content type='html'>Within a UIX-Table you can get the serialized ADF-RowKey with the EL-Expression &lt;strong&gt;${uix.current.rowKeyStr}.&lt;/strong&gt; This undocumented feature allow you to bind the key to a link for table actions instead to use the singleSelection element:&lt;br /&gt;&lt;br /&gt;Example to delete a row with a link into each table row:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;link text="${uix.current.EmployeeId.attributeValue}"&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;boundAttribute name="destination"&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;concat&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;contextProperty select="ui:contextURI"/&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;fixed text="/&lt;strong&gt;deleteEmp.do?rowKeyStr&lt;/strong&gt;="/&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;dataObject source="&lt;strong&gt;${uix.current.rowKeyStr}"/&lt;/strong&gt;&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;fixed text="&amp;event=delete"/&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;/concat&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;/boundAttribute&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;/link&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-110560898484898091?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110560898484898091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110560898484898091'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/01/get-serialized-adf-rowkey-in-uixml.html' title='Get the serialized ADF-RowKey in uiXML'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-110554475917080253</id><published>2005-01-12T16:36:00.000+01:00</published><updated>2005-01-12T16:45:59.170+01:00</updated><title type='text'>How to use the JAZN API to manage OC4J users   </title><content type='html'>Here is a sample code to change the password in the jazn.xml file in usage of the JAZN API:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;strong&gt;changeJaznUserPassword&lt;/strong&gt;(String realm, String userName, String password){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  RealmManager realmMgr = JAZNContext.getRealmManager();            &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  Realm realm = realmMgr.getRealm(realm);            &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  UserManager userMgr = realm.getUserManager();           &lt;br /&gt;   RealmUser user = userMgr.getUser(userName);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  XMLRealmUser xmlrealmuser = (XMLRealmUser)realm.getUserManager().getUser(userName);               &lt;br /&gt; if(xmlrealmuser == null)                   &lt;br /&gt;  throw new Exception("The specified user does not exist in the system.");               &lt;br /&gt;  xmlrealmuser.setCredentials(userPwd, serRepeatedPwd);&lt;br /&gt;&lt;br /&gt;// to refresh automaticlly you must set the property "&lt;em&gt;external.synchronization = true&lt;/em&gt;" in &lt;em&gt;jazn.xml - see previous blog&lt;/em&gt;&lt;br /&gt;&lt;/span&gt;&lt;a name="1022805"&gt;&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;userMgr.refresh();&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-110554475917080253?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110554475917080253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110554475917080253'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/01/how-to-use-jazn-api-to-manage-oc4j.html' title='How to use the JAZN API to manage OC4J users   '/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-110554380402109086</id><published>2005-01-12T16:14:00.000+01:00</published><updated>2005-01-12T16:34:17.996+01:00</updated><title type='text'>How to tell a running OC4J to refresh external updated Users (jazn-data.xml) </title><content type='html'>To tell a running OC4J instance to refresh the cached users after updating the jazn-data.xml manually, you must set the following parameter in the &lt;strong&gt;jazn.xml&lt;/strong&gt; file&lt;br /&gt;&lt;br /&gt;&amp;lt;property name="&lt;strong&gt;external.synchronization&lt;/strong&gt;" value="&lt;strong&gt;true&lt;/strong&gt;"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tju.cn/docs/oas90400/web.904/b10325/configja.htm"&gt;see also jazn documentation:&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-110554380402109086?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110554380402109086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110554380402109086'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2005/01/how-to-tell-running-oc4j-to-refresh.html' title='How to tell a running OC4J to refresh external updated Users (jazn-data.xml) '/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-110371607320598577</id><published>2004-12-22T13:47:00.000+01:00</published><updated>2004-12-29T14:38:16.230+01:00</updated><title type='text'>Write your own JSP EL-Functions to secure your web app</title><content type='html'>Frank has a very good description to use the J2EE security model to secure your web pages fine granular (&lt;a href="http://www.orablogs.com/fnimphius/archives/000600.html"&gt;ADF UIX: Enabling and disabling page compression in UIX&lt;/a&gt;). However I have an extention to this: Within the ADF UIX Framework you can easily extend EL and write your own EL methode like ${isUserInRole('GuestRole')}. As you know UIX was the initial idea to specify JavaServer Faces. So with UIX you can write for each component your own renderer. This means you can write your own Java methodes and call it within the EL renderer like this:&lt;br /&gt;&lt;br /&gt;&amp;lt;submitButton disabled="${ctrl:&lt;strong&gt;isUserInRole&lt;/strong&gt;(uix, 'GuestUserRole')}" text="Save" &amp;gt;&lt;br /&gt;&lt;br /&gt;To accomplish this you must write the following code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public final class ELFunctions{&lt;br /&gt;public static Boolean isUserInRole(Object uix, String role) throws Exception{&lt;br /&gt;ControllerImplicitObject uixObj = (ControllerImplicitObject)uix;&lt;br /&gt;boolean isInRole = uixObj.getBajaContext().getServletRequest().isUserInRole(role);&lt;br /&gt;return new Boolean(isInRole);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;After writing your static Java EL Function you must write a framework factory class. This is accomplished by usage of the UIExtention Framework:&lt;br /&gt;&lt;br /&gt;public class ELFunctionExtension implements UIExtension {&lt;br /&gt;static Class funcClass = com.bm.ui.common.ELFunctions.class;&lt;br /&gt;&lt;br /&gt;static Class getFuncClass(String className){&lt;br /&gt;try {&lt;br /&gt;Class clazz = Class.forName(className);&lt;br /&gt;return clazz;&lt;br /&gt;}&lt;br /&gt;catch(ClassNotFoundException classnotfoundexception) {&lt;br /&gt;throw new NoClassDefFoundError(classnotfoundexception.getMessage());&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void registerSelf(ParserManager parserManager) {&lt;br /&gt;XMLUtils.registerFunctions(parserManager, "&lt;a href="http://xmlns.oracle.com/uix/controller"&gt;http://xmlns.oracle.com/uix/controller&lt;/a&gt;",&lt;br /&gt;funcClass != null ? funcClass : (funcClass = getFuncClass ("com.bm.ui.common.ELFunctions")));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void registerSelf(LookAndFeel lookandfeel) { }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Additional you must register the UIExtention in the WEB-INF/uix-config.xml file:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;ui-extensions&amp;gt;&lt;br /&gt;&amp;lt;extension-class&amp;gt; com.bm.ui.common.ELFunctionExtension &amp;lt;/extension-class&amp;gt;&lt;br /&gt;&amp;lt;/ui-extensions&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now you can access the isUserInRole() method directly from the uiXML code:&lt;br /&gt;&lt;br /&gt;&amp;lt;submitButton disabled="$&lt;strong&gt;{!ctrl:isUserInRole(uix,'PowerUserRole')&lt;/strong&gt;}" text="Save" &amp;gt;&lt;br /&gt;or&lt;br /&gt;&amp;lt;submitButton disabled="${&lt;strong&gt;not ctrl:isUserInRole(uix,'PowerUserRole')&lt;/strong&gt;}" text="Save" &amp;gt;&lt;br /&gt;or&lt;br /&gt;&amp;lt;submitButton disabled="${&lt;strong&gt;ctrl:isUserInRole(uix,'GuestUserRole')&lt;/strong&gt;}" text="Save" &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-110371607320598577?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110371607320598577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110371607320598577'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/12/write-your-own-jsp-el-functions-to.html' title='Write your own JSP EL-Functions to secure your web app'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-110349284790821016</id><published>2004-12-19T22:38:00.000+01:00</published><updated>2004-12-19T22:47:27.910+01:00</updated><title type='text'>ADF: How to edit the current selected row</title><content type='html'>There are may possibilities to edit the current selecte row in usage of ADF-Bindings, ADF- BC4J and uiXML .&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;First you can do the task with a table and input fields into the same page . This approach is very simple and also used within Jdev generated sample code. The underling bindingModel associate to the identical page name and so the bounded edit fileds associate always the same model.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Next to edit the current row into an other page without hidding only the table or edit elements, you must change the associated BindingModel in the new page to the calling page. This is done in five steps: create a new ADF Struts DataAction, change the requested modelName in the getBindingContainerName() methode of your overwritten oracle.cabo.adf.rt.InitModelListener. Additional you should copy all bindingControls from the original UIModel to the underling Model. Into the uiXML page you should call the associated struts action after setting the current row:&lt;br /&gt;&lt;br /&gt;&amp;lt;singleSelection model="${bindings.EmployeesViewIterator}" text="Select and "&amp;gt; &amp;lt;primaryClientAction&amp;gt; &amp;lt;fireAction source="EmployeesView0" event="select"&amp;gt; &amp;lt;/fireAction&amp;gt;&lt;br /&gt;&amp;lt;/primaryClientAction&amp;gt;&lt;br /&gt;....&lt;br /&gt;&amp;lt;event name="select"&amp;gt;&lt;br /&gt;&amp;lt;compound&amp;gt;&lt;br /&gt;&amp;lt;set target="${bindings.EmployeesViewIterator}" property="currentRowIndexInRange" value="${ui:tableSelectedIndex(uix, 'EmployeesView0')}"/&amp;gt;&lt;br /&gt;&amp;lt;struts:action path="/selectEmp.do"&amp;gt;&lt;br /&gt;&amp;lt;/struts:action&amp;gt;&lt;br /&gt;&amp;lt;/compound&amp;gt;&lt;br /&gt;&amp;lt;/event&amp;gt;&lt;br /&gt;&lt;br /&gt;The rest is automatically done by ADF.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A other way is to write our own DataAction for the current user selection. Remove the single selection element from uiXML table and add a column with the following selection link:&lt;br /&gt;&lt;br /&gt;&amp;lt;column&amp;gt;&lt;br /&gt; &amp;lt;columnFormat columnDataFormat="numberFormat"/&amp;gt;&lt;br /&gt;&amp;lt;columnHeader&amp;gt;&lt;br /&gt;&amp;lt;sortableHeader model="${ctrl:createSortableHeaderModel(bindings.EmployeesView,'EmployeeId')}"/&amp;gt;&lt;br /&gt;&amp;lt;/columnHeader&amp;gt;&lt;br /&gt;&amp;lt;contents&amp;gt;&lt;br /&gt;&amp;lt;link text="${uix.current.EmployeeId.attributeValue}"&amp;gt;&lt;br /&gt;&amp;lt;boundAttribute name="destination"&amp;gt;&lt;br /&gt;&amp;lt;concat&amp;gt; &amp;lt;contextProperty select="ui:contextURI"/&amp;gt;&lt;br /&gt;&amp;lt;fixed text="/selectEmp.do?&lt;strong&gt;id&lt;/strong&gt;="/&amp;gt;&lt;br /&gt;&amp;lt;dataObject source="&lt;strong&gt;${uix.current.EmployeeId.attributeValue}"/&lt;/strong&gt;&amp;gt;&lt;br /&gt;&amp;lt;fixed text="&amp;event=&lt;strong&gt;select&lt;/strong&gt;"/&amp;gt;&lt;br /&gt;&amp;lt;/concat&amp;gt;&lt;br /&gt;&amp;lt;/boundAttribute&amp;gt;&lt;br /&gt;&amp;lt;/link&amp;gt;&lt;br /&gt;&amp;lt;/contents&amp;gt;&lt;br /&gt;&amp;lt;/column&amp;gt;&lt;br /&gt;&lt;br /&gt;Afterward the associated adf struts action should set the current row and navigate to the edit page with the struts action forward tag:&lt;br /&gt;&lt;br /&gt;public void on&lt;strong&gt;Select&lt;/strong&gt;(DataActionContext ctx){&lt;br /&gt; String &lt;strong&gt;id&lt;/strong&gt; = (String)evalEL("&lt;strong&gt;${param.id}",&lt;/strong&gt;ctx);&lt;br /&gt; JUIteratorBinding iter = (JUIteratorBinding)evalEL("${bindings.EmployeesViewIterator}", ctx);&lt;br /&gt; Key key = new Key(new Object[] {&lt;strong&gt;id&lt;/strong&gt;});&lt;br /&gt;Row[] rows = iter.getViewObject().findByKey(key,1);&lt;br /&gt; iter.setCurrentRowWithKey(key.toStringFormat(true));&lt;br /&gt;}&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-110349284790821016?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110349284790821016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110349284790821016'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/12/adf-how-to-edit-current-selected-row.html' title='ADF: How to edit the current selected row'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-110339432715859921</id><published>2004-12-18T19:12:00.000+01:00</published><updated>2004-12-18T20:06:25.393+01:00</updated><title type='text'>How to evaluate any parameter in ADF-Actions </title><content type='html'>You can easiely evaluate any parameter including servlet, request or ADF binding parameters with the Expression Language Syntax (EL).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/** Evaluate an EL (expression language) Expression and return the result &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;* @param expression EL Expression to evaluate &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;* @param ctx The DataAction context. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;* @return The object identified by the EL expression &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;*/ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public Object evalEL(String expression, DataActionContext ctx) { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Evaluator eval = Evaluator.getEvaluator(ctx); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;return eval.getValue(expression); }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An example to retrive a request parameter into an adf action:&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;String myImputParam = (String)evalEL(ctx, "${param.myInputParam}");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-110339432715859921?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110339432715859921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110339432715859921'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/12/how-to-evaluate-any-parameter-in-adf.html' title='How to evaluate any parameter in ADF-Actions '/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-110258266081537380</id><published>2004-12-09T08:59:00.000+01:00</published><updated>2004-12-10T18:11:18.080+01:00</updated><title type='text'>Spring Toplink Integration </title><content type='html'>I am very happy to annonce Oracle's Springframwork support. The integration includes the Toplink Persistence Framework like Hibernate. &lt;a href="http://www.oracle.com/technology/products/ias/toplink/preview/spring/index.html"&gt;http://www.oracle.com/technology/products/ias/toplink/preview/spring/index.html&lt;/a&gt;&lt;br /&gt; ... numerous thanks Jim Clark!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-110258266081537380?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110258266081537380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/110258266081537380'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/12/spring-toplink-integration.html' title='Spring Toplink Integration '/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-109855315473974612</id><published>2004-10-23T19:24:00.000+02:00</published><updated>2004-10-23T19:39:14.740+02:00</updated><title type='text'>Excellent Architecture</title><content type='html'>... a good architecture can be more than J2EE: &lt;a href="http://www.allianzarena.de/impinc/fotogalerie/20042.php?actpos=11"&gt;http://www.allianzarena.de/impinc/fotogalerie/20042.php?actpos=11&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm proud to announce the J2EE community our first success illumination test in Munich (Soccer Station). This is a very good example of extreme building and best architecture practice!&lt;br /&gt;&lt;br /&gt;.. be inspired!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-109855315473974612?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109855315473974612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109855315473974612'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/10/excellent-architecture.html' title='Excellent Architecture'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-109491447993914972</id><published>2004-09-11T16:42:00.000+02:00</published><updated>2004-09-11T16:58:39.790+02:00</updated><title type='text'>Struts versus JavaServer Faces (JSF)</title><content type='html'>&lt;a href="http://forum.java.sun.com/thread.jsp?forum=427&amp;amp;thread=553126"&gt;Many people compare Struts with JSF&lt;/a&gt;. My experience on both give me the opinion to say there is a complete different development approach with JSF.&lt;br /&gt;The only equals between JSF and Struts are the external XML defined states of the controller. The JSF-controller concept is much more comparable with Swing-Component (MVC) and not central managed like struts. Additional, Struts is only a Servlet-Controller based on the MVC-2 Pattern and does not include UI-Components with Rendering Delegation Pattern, Statemanagement, full I18N support, component validators etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-109491447993914972?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109491447993914972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109491447993914972'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/09/struts-versus-javaserver-faces-jsf.html' title='Struts versus JavaServer Faces (JSF)'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-109482778923560314</id><published>2004-09-10T16:30:00.000+02:00</published><updated>2004-09-10T21:49:42.933+02:00</updated><title type='text'>Fetch children from any service method in ADF-Treebinding</title><content type='html'>With &lt;a href="http://radio.weblogs.com/0118231/2004/07/20.html#a354"&gt;ADF-TreeBinding&lt;/a&gt; you have the only possibility to get the children nodes from the same BeanClass used to render the current node self. Therefor you must add a getter method that return a collection of childrens in the node bean. There is no possibility to delegate the call to an other service routine e.g. to a delegate class. With the &lt;a href="http://www.dofactory.com/patterns/PatternProxy.aspx"&gt;proxy pattern &lt;/a&gt;you can solve this problem easily. You must wrap the node bean in a proxy class and delegate each call to wrapped node expect your &lt;span style="font-family:courier new;"&gt;getChildren&lt;/span&gt;() method. This method can use any service class to retrieve the children nodes and store the returned children's as proxies in the instance. Additional you must bind the proxy to the tree and not the node bean. This little trick make it ease to avoid the ADF-Binding restrictions.&lt;br /&gt;&lt;br /&gt;Example code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;class MyNode implements Node {&lt;br /&gt;...&lt;br /&gt;int getId() {...}&lt;br /&gt;String getName() {...}&lt;br /&gt;List getChildren(){...}&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class ProxyNode implements Node {&lt;br /&gt;Node node = null;&lt;br /&gt;Service service = null;&lt;br /&gt;ProxyNode(Service service, Node node) {&lt;br /&gt;this.node = node;&lt;br /&gt;this.service = service;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String getName(){&lt;br /&gt;// delegate to org node&lt;br /&gt;return node.getName();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff9900;"&gt;List getChildren(){&lt;br /&gt;if(node.getChildren() == null){&lt;br /&gt;return service.getChildrenNodes(node.getId());&lt;br /&gt;}&lt;br /&gt;return node.getChildren();&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Attention, the tree binding fetch alway the actual selected node and all nodes of his children nodes to know which rendering mode to use (icon, link ...)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-109482778923560314?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109482778923560314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109482778923560314'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/09/fetch-children-from-any-service-method.html' title='Fetch children from any service method in ADF-Treebinding'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-109468037508783560</id><published>2004-09-08T22:33:00.000+02:00</published><updated>2004-09-08T23:58:33.846+02:00</updated><title type='text'>J2EE Web Authentication in conjunction with BC4J and JDBC Proxy Authentication</title><content type='html'>&lt;a href="https://cwisdb.cc.kuleuven.ac.be/ora10doc/network.101/b10773/admnauth.htm"&gt;Proxy Authentication&lt;/a&gt; is designd to address connection performance problems associated with three-tier. Specifically, it allows to designate an already opend connection from a pool to a specific user with his privileges without logout and login each time.&lt;br /&gt;BC4J-Framwork use the Strategie Pattern to customize the login and connection process. With JDeveloper 10g there is an default Implementation to use the feature. There are only tow single steps to use this feature in conjunction with J2EE login:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Set Connection Factory property &lt;span style="font-family:courier new;"&gt;jbo.ampool.sessioncookiefactoryclass to oracle.jbo.http.OCISessionCookieFactory&lt;/span&gt; in bx4j.xcfg (use the connfiguration dialog for the root Application module) &lt;/li&gt;&lt;li&gt;&lt;strong&gt;or &lt;/strong&gt;set follow Java option: -Djbo.ampool.sessioncookiefactoryclass=oracle.jbo.http.OCISessionCookieFactory&lt;/li&gt;&lt;li&gt;Create a J2EE Login Page (&lt;a href="http://www.oracle.com/technology/tech/java/oc4j/htdocs/how-to-security-JAAS.html"&gt;Example in usage of OC4J&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;After successfull login you should call any methode to set the new user &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;String DEFAULT_PWD = "myDefaultPwd123";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;HttpContainer c = HttpContainer.getInstanceFromSession(session); c.setSessionCookie("myRootAppModule",null); // &lt;a href="http://www.oracle.com/technology/products/jdev/howtos/bc4j/howto_dynamic_jdbc.html"&gt;More informations about getInstanceFromSession&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;MyEnvInfoProvider.session.setAttribute(Configuration.DB_USERNAME_PROPERTY, request.getRemoteUser());&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;This Example works also with an x.509 certificate: &lt;a href="http://www.oracle.com/technology/oramag/oracle/03-may/o33trends.html"&gt;see&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/products/jdev/howtos/bc4j/howto_dynamic_jdbc.html"&gt;Example of complete Connection Strategy for BC4J&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/sample_code/tech/java/sqlj_jdbc/files/9i_jdbc/OCIMidAuthSample/Readme.html"&gt;More infos about proxy authentication&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-109468037508783560?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109468037508783560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109468037508783560'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/09/j2ee-web-authentication-in-conjunction.html' title='J2EE Web Authentication in conjunction with BC4J and JDBC Proxy Authentication'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-109421468127320694</id><published>2004-09-03T14:14:00.000+02:00</published><updated>2004-09-03T16:06:29.976+02:00</updated><title type='text'>ADF POJO Binding</title><content type='html'>I was wondering why the native POJO binding doesn't allow creation of new objects (insert). After a look I found out there is not creation supported in the default DataControl implementation class (&lt;span style="font-family:courier new;"&gt;DCGenericDataControl&lt;/span&gt;) of POJO. To suppot the insert operation you must create and register your own DataControl in the &lt;span style="font-family:courier new;"&gt;DataBinding.cpx&lt;/span&gt; file and overwrite the &lt;span style="font-family:courier new;"&gt;createRowData(DCRowContext)&lt;/span&gt; method. To implement the method you can use the TopLink example found under: &lt;span style="font-family:courier new;"&gt;../jdev/BC4J/scrc/adfmsrc.zip/oracle.adf.model/generic/toplink/TopLinkDataControl.java&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;Afterward you must also overwrite the &lt;span style="font-family:courier new;"&gt;isOperationSupported&lt;/span&gt;(...) in your DataControl to enable the MenuBar buttons (check byte parameter with &lt;span style="font-family:courier new;"&gt;DCDataControl&lt;/span&gt; static &lt;span style="font-family:courier new;"&gt;DCDataControl.OPER_DATA_ROW&lt;/span&gt;... ).&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ist not allowed to use only the new operator and insert the bean into the collection!!! &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The same requirement exist for the DeleteOperation. You must also overwrite the &lt;span style="font-family:courier new;"&gt;removeRowData()&lt;/span&gt; Methode as above described.&lt;br /&gt;&lt;br /&gt;A BUG in the ADF code prevent JClient to refershe automaticly the iterators and show the new data. You can fix it for your own: Unpack ../jdev/BC4J/scrc/adfmsrc.zip and uncomment the if(!cont&lt;span style="font-family:courier new;"&gt;ainsRow(row)) &lt;/span&gt;in the methode &lt;span style="font-family:courier new;"&gt;insertRow(Row)&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;insertRowAtRangeIndex(int, Row)&lt;/span&gt; of o&lt;span style="font-family:courier new;"&gt;racle/adf/model/generic/DCRowSetIteratorImpl.java&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-109421468127320694?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109421468127320694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109421468127320694'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/09/adf-pojo-binding.html' title='ADF POJO Binding'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-109295060325272229</id><published>2004-08-19T22:47:00.000+02:00</published><updated>2004-08-19T23:29:20.993+02:00</updated><title type='text'>JSF Facet contra UIX Named Children</title><content type='html'>JSF introduce &lt;a href="http://www.exadel.com/tutorial/jsf/components/next.html"&gt;facet&lt;/a&gt; (&amp;lt;f:facet name="header"&amp;gt;) tag to address elements inside a parent tag and have control over it. This is a anti pattern for general XML developer and very badly to handle with other specs. as XMLSchema.&lt;br /&gt;Old UIX implementation use for that a more common XML syntax (&amp;lt;f:heander&amp;gt;) and name this named children . Index children are the opposite and used to arrange each elements in a sequence For this UIX (old impl.) use the ((&amp;lt;contents&amp;gt;). Tag. Unfortunately Oracle UIX / JSF implementation must also use the new facet syntay to be spec compliant.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-109295060325272229?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109295060325272229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109295060325272229'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/08/jsf-facet-contra-uix-named-children.html' title='JSF Facet contra UIX Named Children'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-109294736698446011</id><published>2004-08-19T21:58:00.000+02:00</published><updated>2004-08-19T22:40:41.526+02:00</updated><title type='text'>UIX as JSF Beta Available</title><content type='html'>Now Oracles UIX technology has been converted to the new JSF API. Here you will find the &lt;a href="http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf/index.html"&gt;Early Access Release&lt;/a&gt;. I am very happy to found most old features in JSF implementation.&lt;br /&gt;&lt;br /&gt;In the past it was very hard to persuade developer to use UIX even though the UIX architetrue is very similar. Now with the magic word JSF it's very easy :-)&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-109294736698446011?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109294736698446011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109294736698446011'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/08/uix-as-jsf-beta-available.html' title='UIX as JSF Beta Available'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-109060535620458725</id><published>2004-07-23T19:40:00.000+02:00</published><updated>2004-07-23T19:55:56.203+02:00</updated><title type='text'>Configure JVM for OC4J </title><content type='html'>When you update the JVM of OC4J you must also change following security parameters in the java.security file to prevent a java.lang.SecurityException:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;auth.policy.provider&lt;/strong&gt;=&lt;strong&gt;oracle.security.jazn.spi.PolicyProvider&lt;/strong&gt;&amp;nbsp; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;login.configuration.provider&lt;/strong&gt;=&lt;strong&gt;oracle.security.jazn.spi.LoginConfigProvider &lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;In the standard JVM configuration the appropriated JVM security definition file will&amp;nbsp;be located in:&amp;nbsp; /usr/java1.4.x/&lt;strong&gt;jre/lib/security/java.security&lt;/strong&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-109060535620458725?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109060535620458725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/109060535620458725'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/07/configure-jvm-for-oc4j.html' title='Configure JVM for OC4J '/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-108911869755153852</id><published>2004-07-06T12:55:00.000+02:00</published><updated>2004-07-06T21:52:30.420+02:00</updated><title type='text'>Support of Oracle Application Server Load Balancing Strategies</title><content type='html'>mod_oc4j Load Balancing support follow routing strategies:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Random&lt;/strong&gt;&lt;br /&gt;route the request to next JVM in a cluster in usage of the randomm algorithm.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Random with local affinity&lt;/strong&gt;&lt;br /&gt;route the request to next JVM on the local machine in usage of the random algorithm, if none available &lt;br /&gt;it reroute to the next remote JVM also in usage of the  ramdom algorithm.  &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Random with routing weight&lt;/strong&gt;&lt;br /&gt;route each request randomly to all available JVM in a cluster depending of the  &lt;br /&gt;configured routing resource weight. A high value (integer) means more resources available.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Round robin&lt;/strong&gt;&lt;br /&gt;choose for each request the next JVM in a cluster.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Round robin with local affinity&lt;/strong&gt;&lt;br /&gt;prefer the for each request the next JVM on the locale mashine &lt;br /&gt;other it will use the next remotely.&lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;Round robin with routing weight&lt;/strong&gt;&lt;br /&gt;prefer the for each request the next JVM in a cluster depending of the  &lt;br /&gt;configured routing resource weight.&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Metric based&lt;/strong&gt;&lt;br /&gt;choose the JVM based on OC4J metrics and his availability. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Metric based with local affinity&lt;/strong&gt;&lt;br /&gt;first choose the JVM based on locale OC4J metrics and his availability otherwise it will choose the JVM remotely.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://otn.oracle.com/documentation/appserver10g.html"&gt;See also ...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-108911869755153852?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108911869755153852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108911869755153852'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/07/support-of-oracle-application-server.html' title='Support of Oracle Application Server Load Balancing Strategies'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-108902509755450293</id><published>2004-07-05T12:39:00.000+02:00</published><updated>2004-07-12T14:22:15.466+02:00</updated><title type='text'>HTTP-Connection test  with telnet</title><content type='html'>recently I get the question how to test a HTTP Server connection without any browser (eg. on a server without any X-Server). The simplest way is to connect the HTTP Server  with the telnet programm and request the resource with HTTP commands:&lt;br /&gt;Here an example:&lt;br /&gt;Open the connetion with the http listener port:&lt;br /&gt;&lt;strong&gt;telnet www.oracle.com 80&lt;/strong&gt;&lt;br /&gt;Requet the resource /index.htm with GET methode and protocol HTTP/1.1:&lt;br /&gt;&lt;strong&gt;GET /index.htm HTTP/1.1&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This will get the complete html content of the index.html page&lt;br /&gt;&lt;br /&gt;or &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HEAD /pages/test.jsp HTTP/1.1&lt;/strong&gt;&lt;br /&gt;to get informations about the resource &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.boutell.com/newfaq/definitions/http.html"&gt;See also ....&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-108902509755450293?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108902509755450293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108902509755450293'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/07/http-connection-test-with-telnet.html' title='HTTP-Connection test  with telnet'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-108895078021864627</id><published>2004-07-04T16:04:00.000+02:00</published><updated>2004-07-06T12:52:27.323+02:00</updated><title type='text'>UIX: Build Context Relative Links</title><content type='html'>to build a resource URL including the context path you can use the ui:contextURI methode directly in your UIX-Page as follow:&lt;br /&gt; &lt;br /&gt;  &lt;br /&gt;                                &amp;lt;flowLayout&amp;gt;&lt;br /&gt;                                  &amp;lt;contents childData="${fileList.file} &amp;gt;&lt;br /&gt;                                        &amp;lt;link text="${uix.current.text}"&amp;gt;&lt;br /&gt;                                              &amp;lt;boundAttribute name="destination"&amp;gt;&lt;br /&gt;                                                &amp;lt;concat&amp;gt;&lt;br /&gt;                                                  &amp;lt;contextProperty select="ui:contextURI"/&amp;gt;&lt;br /&gt;                                                  &amp;lt;fixed text="/"/&amp;gt; &lt;br /&gt;                                                  &amp;lt;ui:dataObject source="${uix.current.source}"/&amp;gt;&lt;br /&gt;                                                &amp;lt;/concat&amp;gt;&lt;br /&gt;                                              &amp;lt;/boundAttribute&amp;gt;&lt;br /&gt;                                              &amp;lt;/link&amp;gt;&lt;br /&gt;                                  &amp;lt;/contents&amp;gt;&lt;br /&gt;                                &amp;lt;/flowLayout&amp;gt;                   &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-108895078021864627?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108895078021864627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108895078021864627'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/07/uix-build-context-relative-links.html' title='UIX: Build Context Relative Links'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-108868366805867690</id><published>2004-07-01T13:28:00.000+02:00</published><updated>2004-07-04T13:35:24.030+02:00</updated><title type='text'>EJB Lookup within Oracle Appliaction Server in usage of Clustering, Scalability and Fault-Tolerance</title><content type='html'>There is a main different between OC4J-Standalone EJB addressing schema and OC4J integrated in the Oracle Application Server. Think, Oracle Application Server has additional features regarding Clustering, Scalability and Fault-Tolerance, witch must be  carefully attended in the deployment and EJB calling phase. &lt;br /&gt;E.g. for scalability you can instance more then one OC4J components with the same configuration (many OC4J processes). In this case you must configure (default) a RMI port range in the opmn.xml. So OPMN (Oracle Process Monitor) is able to assign a different port to each OC4J instance in the startup phase. &lt;br /&gt;A other feature of Oracle Application Server is to load balance the EJB calls depending of many different implemented algorithm (eg. round robin, metric based, ...). In each of this cases you can not address an OC4J instance directly like this:&lt;br /&gt;&lt;br /&gt;  &lt;strong&gt;env.put(Context.PROVIDER_URL, "ormi://HOST:PORT/EjbAppName")&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In this situation you should us the following addressing schema:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;  env.put(Context.PROVIDER_URL, "opmn:ormi://HOST:OPMNPORT:OC4JInstanceName/EjbAppName");&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Notice: for application portability, Oracle recommends to use &lt;strong&gt;jndi.properties &lt;/strong&gt;instead of hardcoding the environment properties in client code. &lt;br /&gt;&lt;br /&gt;You will find more information regarding OC4J and EJB in the OC4J Service  Guide and in the &lt;a href="http://otn.oracle.com/tech/java/oc4j/904/collateral/OC4J-FAQ-EJB-904.html"&gt;OC4J-FAQ on OTN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;regards&lt;br /&gt;Berthold&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-108868366805867690?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://j2ee-oracle.blogspot.com/feeds/108868366805867690/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7061548&amp;postID=108868366805867690' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108868366805867690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108868366805867690'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/07/ejb-lookup-within-oracle-appliaction.html' title='EJB Lookup within Oracle Appliaction Server in usage of Clustering, Scalability and Fault-Tolerance'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-108816010665593626</id><published>2004-06-25T12:41:00.000+02:00</published><updated>2004-07-01T14:16:35.843+02:00</updated><title type='text'>OC4J Remote deployment with dcmctl Commands</title><content type='html'>I get often the question how to deploy a J2EE App. remotely to IAS. Here are two examples to that:  &lt;br /&gt;&lt;br /&gt;java.exe -Djava.protocol.handler.pkgs=HTTPClient -jar d:\jdev9052\jdev\lib\oc4j_remote_deploy.jar http://192.33.33.12:1811/Oc4jDcmServletAPI/ ias_admin PASSWORD redeploy F:\ora10g\midtier F:\test\deploy\helloOracle.ear helloOracle home&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;parameter's:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Protocol&lt;/strong&gt;: -Djava.protocol.handler.pkgs=HTTPClient &lt;br /&gt;&lt;strong&gt;Deploy Utility:&lt;/strong&gt; eg. d:\jdev9052\jdev\lib\oc4j_remote_deploy.jar &lt;br /&gt;&lt;strong&gt;MidtierDeployServlet incl. EM port&lt;/strong&gt;: http://192.33.33.12:1811/Oc4jDcmServletAPI/&lt;br /&gt;&lt;strong&gt;IAS-Username:&lt;/strong&gt; ias_admin &lt;br /&gt;&lt;strong&gt;Password:&lt;/strong&gt; PASSWORD &lt;br /&gt;&lt;strong&gt;Option eg:&lt;/strong&gt; redeploy, listApplications ... (any dcmctl option is possible"&lt;br /&gt;&lt;strong&gt;Midtier ORACLE_HOME Directory:&lt;/strong&gt; eg. &lt;br /&gt;F:\ora10g\midtier &lt;br /&gt;&lt;strong&gt;EAR-File:&lt;/strong&gt; F:\test\deploy\helloOracle.ear &lt;br /&gt;&lt;strong&gt;AppName eg:&lt;/strong&gt; helloOracle &lt;br /&gt;&lt;strong&gt;InstanceName:&lt;/strong&gt; home&lt;br /&gt;&lt;br /&gt;or use the following ANT-Task:&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;br /&gt;&amp;lt;java jar="${jdeveloper.dir}/jdev/lib/oc4j_remote_deploy.jar" fork="yes"&amp;gt;&lt;br /&gt;&amp;lt;jvmarg value="-Djava.protocol.handler.pkgs=HTTPClient" /&amp;gt;&lt;br /&gt;&amp;lt;arg value="http://remote_server:1810/Oc4jDcmServletAPI/" /&amp;gt;&lt;br /&gt;&amp;lt;arg value="ias_admin" /&amp;gt;&lt;br /&gt;&amp;lt;arg value="PASSWORD" /&amp;gt;&lt;br /&gt;&amp;lt;arg value="redeploy" /&amp;gt;&lt;br /&gt;&amp;lt;arg value="${ias_oracle_home.dir}/" /&amp;gt;&lt;br /&gt;&amp;lt;arg value="${build.dir}/${name}.ear" /&amp;gt;&lt;br /&gt;&amp;lt;arg value="${appname}" /&amp;gt;&lt;br /&gt;&amp;lt;arg value="OC4J_XXXXINSTANCEName" /&amp;gt;&lt;br /&gt;&amp;lt;/java&amp;gt;&lt;br /&gt;&lt;br /&gt;Here an other example to query DCM with the listApplications paramter:&lt;br /&gt;&lt;br /&gt;F:\jdev9051\jdk\jre\bin\javaw.exe -Djava.protocol.handler.pkgs=HTTPClient -jar F:\jdev9051\jdev\lib\oc4j_remote_deploy.jar http://testhost:1811/Oc4jDcmServletAPI/ ias_admin **** listApplications D:\ora10g\midtier&lt;br /&gt;&lt;br /&gt;All commands will interpreted form the Oracle Application Server Servlet deployed in the home OC4J instance. &lt;br /&gt;&lt;br /&gt;regards,&lt;br /&gt;Berthold&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-108816010665593626?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://j2ee-oracle.blogspot.com/feeds/108816010665593626/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7061548&amp;postID=108816010665593626' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108816010665593626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108816010665593626'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/06/oc4j-remote-deployment-with-dcmctl.html' title='OC4J Remote deployment with dcmctl Commands'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-108629734865302411</id><published>2004-06-03T22:20:00.000+02:00</published><updated>2004-06-03T23:15:48.653+02:00</updated><title type='text'>UIX and Struts</title><content type='html'>UIX in conjunction with the Struts extention (not ADF-DataBinding) can not automaticly populate form fields of a UIX-Table (editable UIX-Table or selectionKey of the table component) to ActionForms with Array-Argumens like setFirstName(String[]). The problem lies in the naming schema of cascaded components. To identify each column with an unique name, UIX concat the name of each column element with the table name and the column sign ':'. So, an editable column get the name like myTable:firstName. With this extention Struts can't find the right setter method in the ActionFormBean. This limitation needs to overwrite the form struts population mechanism to solve the problem.  &lt;br /&gt;To do that you must overwrite the processPopulate methode of the  org.apache.struts.action.RequestProcessor.java &lt;br /&gt;&lt;br /&gt; &lt;blockquote&gt; &lt;br /&gt;    protected void processPopulate(HttpServletRequest request,&lt;br /&gt;      HttpServletResponse response,&lt;br /&gt;      ActionForm form,&lt;br /&gt;      ActionMapping mapping)&lt;br /&gt;       throws ServletException {&lt;br /&gt;&lt;br /&gt;    super.processPopulate(request, response, form, mapping);&lt;br /&gt;&lt;br /&gt;    String contentType = request.getContentType();&lt;br /&gt;&lt;br /&gt;    if ((contentType != null &amp;&amp; contentType.startsWith("multipart")) || (form == null)) {&lt;br /&gt;      return;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    UixStrutsFormPopulateUtil.populate(form, request);&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;  }&lt;br /&gt;&lt;br /&gt;Additional you must register your new RequestProcessor within the struts-config.xml like this:&lt;br /&gt;&lt;br /&gt;  &lt;controller processorClass="com.bmaier.uix.UixStrutsRequestProcessor"/&gt;&lt;br /&gt;&lt;br /&gt;When you use table selection moded, UIX add the keyword "Selected" and the row index to the tableName (myTable:Selected:1, myTable:Selected:2 usw.). This behavior must also be handled in your own population methode to get an array of selected rows.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-108629734865302411?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://j2ee-oracle.blogspot.com/feeds/108629734865302411/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7061548&amp;postID=108629734865302411' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108629734865302411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108629734865302411'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/06/uix-and-struts.html' title='UIX and Struts'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-108603804967640345</id><published>2004-05-31T23:02:00.000+02:00</published><updated>2004-05-31T23:17:37.256+02:00</updated><title type='text'>JMX Console for OC4J</title><content type='html'>I am pleased to found a very nice Open Sorces JMX Console (&lt;strong&gt;MC4J&lt;/strong&gt; - &lt;a href="http://mc4j.sourceforge.net"&gt;http://mc4j.sourceforge.net&lt;/a&gt;) to administer and introspect each JMX Server like OC4J. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-108603804967640345?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://j2ee-oracle.blogspot.com/feeds/108603804967640345/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7061548&amp;postID=108603804967640345' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108603804967640345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108603804967640345'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/05/jmx-console-for-oc4j.html' title='JMX Console for OC4J'/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7061548.post-108514438541455092</id><published>2004-05-21T14:52:00.000+02:00</published><updated>2004-05-21T14:59:45.413+02:00</updated><title type='text'>Hello </title><content type='html'>... now I'm also online to publish my private experience in the Oracle J2EE environment :-) Hope you will enjoy it! &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061548-108514438541455092?l=j2ee-oracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://j2ee-oracle.blogspot.com/feeds/108514438541455092/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7061548&amp;postID=108514438541455092' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108514438541455092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061548/posts/default/108514438541455092'/><link rel='alternate' type='text/html' href='http://j2ee-oracle.blogspot.com/2004/05/hello.html' title='Hello '/><author><name>Berthold Maier</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
