Teki's blog

Thursday, June 30, 2011

SQL Constraints List

Find SQL constraint:

SELECT *
FROM all_constraints
where CONSTRAINT_NAME LIKE 'ConstraintName'

Tuesday, February 09, 2010

Netbeans 6.8 & JAX-WS 2.2 (Metro 2.0) Service & Weblogic 10.x Server deployment

Deploying JAX-WS web service created with Netbeans to Weblogic server is not easy…opposite it’s getting harder and harder with every new version of Netbeans. I believe the main problem is that Netbeans does not create all the artifacts needed by Weblogic server – there are at least two things missing:

- classes representing request and response web service messages

- WSDL and schemas

Another problem is that we need to override default implementation of JAX-WS that comes with Weblogic Server (if we want to use latest JAX-WS RI implementation – e.g. JAX-WS 2.2).

So, here is the tutorial based on these two posts http://forums.java.net/jive/thread.jspa?messageID=375626 and http://forums.sun.com/thread.jspa?threadID=5419678.

1. Create WebApplication Project:

- Choose BEA Weblogic Server as target server (with JAVA EE 5)


2. Create New WebService (e.g HelloWorld in package test)

- Add simple helloWorld method that returns String


3. Check web.xml – there should be listener and servlet for HelloWorld service:

<listener>

<listener-class>

com.sun.xml.ws.transport.http.servlet.WSServletContextListener

</listener-class>
</listener>

<servlet>

<servlet-name>HelloWorld</servlet-name>

<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>HelloWorld</servlet-name>

<url-pattern>/HelloWorld</url-pattern>

</servlet-mapping>


4. We have to modify the build.xml to include a "-pre-dist" target that invokes the wsgen Ant task:

<project name="JaxWsRI" default="default" basedir=".">

<description>Builds, tests, and runs the project JaxWsRI.</description>

<import file="nbproject/build-impl.xml"/>

<target name="-pre-dist">

<taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen">

<classpath path="${javac.classpath}:${j2ee.platform.classpath}"/>

</taskdef>

<wsgen

debug="true"

keep="true"

destdir="build/web/WEB-INF/classes"

resourcedestdir="build/web/WEB-INF/classes"

xendorsed="true"

sei="test.HelloWorld">

<classpath>

<pathelement path="${javac.classpath}:${j2ee.platform.classpath}"/>

<pathelement location="${java.home}/../lib/tools.jar"/>

<pathelement location="build/web/WEB-INF/classes"/>

</classpath>

</wsgen>

</target>


5. We also need WSDL and XSD files for web service

- Create new folder named wsdl in WEB-INF folder

- Right click HelloWorld web service under WebServices and select generate and copy WSDL… (choose wsdl folder created in first step)


6. Under project libraries deselect option to deploy Metro libraries.


7. Create new JAVA EE Enterprise Application (Select BEA Weblogic Server and Java EE and deselect any checkboxes for creating modules)


8. Add WebApplication with HelloWorld WS as JavaEE Module


9. Configure project packaging (project properties à build à packaging)

- Add Metro 2.0 Library

- Change Metro 2.0 location in archive to /APP-INF/lib


10. Modify weblogic-application.xml:

<?xml version="1.0" encoding="UTF-8"?>

<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90">

<application-param>

<param-name>webapp.encoding.default</param-name>

<param-value>UTF-8</param-value>

</application-param>

<prefer-application-packages>

<package-name>com.ctc.*</package-name>

<package-name>com.sun.xml.*</package-name>

<package-name>com.sun.istack.*</package-name>

<package-name>com.sun.msv.datatype.*</package-name>

<package-name>com.sun.msv.driver.*</package-name>

<package-name>com.sun.msv.grammar.*</package-name>

<package-name>com.sun.msv.reader.*</package-name>

<package-name>com.sun.msv.relaxns.*</package-name>

<package-name>com.sun.msv.scanner.*</package-name>

<package-name>com.sun.msv.util.*</package-name>

<package-name>com.sun.msv.verifier.*</package-name>

<package-name>com.sun.msv.writer.*</package-name>

<package-name>com.sun.org.apache.xml.internal.*</package-name>

<package-name>com.sun.wsit.*</package-name>

<package-name>javax.jws.*</package-name>

<package-name>javax.xml.bind.*</package-name>

<package-name>javax.xml.soap.*</package-name>

<package-name>javax.xml.stream.*</package-name>

<package-name>javax.xml.ws.*</package-name>

<package-name>javax.xml.activation.*</package-name>

<package-name>javax.xml.annotation.*</package-name>

<package-name>javax.xml.mail.*</package-name>

<package-name>javax.xml.security.*</package-name>

<package-name>javax.xml.registry.*</package-name>

<package-name>javax.xml.rpc.*</package-name>

<package-name>javax.xml.crypto.*</package-name>

<package-name>javanet.staxutils.*</package-name>

<package-name>jp.gr.xml.*</package-name>

<package-name>org.codehaus.stax2.*</package-name>

<package-name>org.glassfish.gmbal.*</package-name>

<package-name>org.iso_relax.*</package-name>

<package-name>org.jcp.xml.dsig.*</package-name>

<package-name>org.jvnet.*</package-name>

<package-name>org.relaxng.*</package-name>

</prefer-application-packages>

</weblogic-application>


11. Add standard deployment descriptor (application.xml):

<application version="5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd">

<display-name>JaxWSRiEA</display-name>

<module>

<web>

<web-uri>WebAlplication.war</web-uri>

<context-root>/WebAlplication</context-root>

</web>

</module>

</application>

Monday, May 04, 2009

Statefull session or statefull bean

Something that I'll have to deal with in clustered production enviroment. :-S

http://www.mail-archive.com/ejb-interest@java.sun.com/msg08964.html

Monday, February 23, 2009

IE getElementsByName not working in JavaScript

IE's DOM methods getElementsByName and getElementById are not implemented properly.
So document.getElementsByName returns 0 if you don't have attribute id with same value as in attribute name.


It seems this is fixed in IE8. See demo:

Wednesday, February 11, 2009

Is JAX-WS client proxy thread safe?

Because creating web service client proxy object can be expensive, in my applications I want to reuse proxy objects. I was wondering if I can safely reuse in multiple threads. After asking uncle Google it seems, that it is not specification requirement that use of proxy objects is thread safe, but in JAX-WS RI, once proxy is created, it can be used across threads(as long as you don't change RequestContext in each thread) (by jitu).

http://forums.java.net/jive/thread.jspa?messageID=328378&#328378
http://forums.java.net/jive/thread.jspa?threadID=18756
http://markmail.org/message/gab5mztq33omeynf

I've checked this with simple application and it's true - using classes from JDK 1.6 I get an exception:
javax.xml.ws.soap.SOAPFaultException: Couldn't create SOAP message due to exception: XML reader error: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,2]
Message: The markup in the document preceding the root element must be well-formed.

If I run same code with JAX-WS RI classes it works fine.

Tuesday, March 01, 2005

Oracle ADF - Refresh data from Bean collection

When working with the ADF Business Components data control, the view objects and entity objects have event notification in place that the ADF Business Components implementation of the ADF row set iterator responds intelligently to. So, ADF iterators working with ADF Business Components-based back-ends are always up to date with changes made to the collections. If you are working instead with data binding against simple Java classes and do something in your code to update a Collection-valued property, you need to manually trigger the rebuild of the iterator.

Here is a code to rebuild iterator:

DCIteratorBinding dcIterator= actionContext.getBindingContainer().findCtrlBinding("someCtrBinding").getDCIteratorBinding();
((DCRowSetIteratorImpl)(dcIterator.getRowSetIterator())).rebuildIteratorUpto(-1);