Remove compileconf, Glassfish 2.1 dependencies, update HTTP BC and REST BC to versions from separate repositories
parent
6d34112b44
commit
fc7baf637c
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
# Full build script
|
||||
|
||||
JV_SRCROOT=`dirname $0`
|
||||
JV_SRCROOT=`realpath $JV_SRCROOT`
|
||||
export JV_SRCROOT
|
||||
mvn clean -Dmaven.repo.local=$JV_SRCROOT/m2/repository $*
|
||||
mvn install -Dmaven.test.skip=true -e -Dmaven.repo.local=$JV_SRCROOT/m2/repository $*
|
|
@ -64,7 +64,6 @@
|
|||
11/19/09: Ed W.
|
||||
-->
|
||||
<property name="junit.maxmemory" value="512m" />
|
||||
<property name="junit.gfbase" value="${env.JV_GFBASE}" />
|
||||
<property name="junit.srcroot" value="${project.build.testSourceDirectory}" />
|
||||
|
||||
<!-- default ant-junit version if caller does not supply: -->
|
||||
|
@ -134,7 +133,6 @@
|
|||
<property name="echo.jbicomps.junit.sysproperties" refid="jbicomps.junit.sysproperties" />
|
||||
<echo>
|
||||
work.dir=${work.dir}
|
||||
junit.gfbase=${junit.gfbase}
|
||||
junit.maxmemory=${junit.maxmemory}
|
||||
junit.srcroot=${junit.srcroot}
|
||||
jbicomps.junit.sysproperties=${echo.jbicomps.junit.sysproperties}
|
||||
|
|
|
@ -67,6 +67,9 @@
|
|||
<jbicomps.currentVersion>3.0.6-SNAPSHOT</jbicomps.currentVersion>
|
||||
<ojc.default.release.version>3.0.6-SNAPSHOT</ojc.default.release.version>
|
||||
|
||||
<!-- The version number for openesb-core components. 2.4.2 is available in central, 2.4.3-SNAPSHOT = git master. -->
|
||||
<openesb-core-version>2.4.2</openesb-core-version>
|
||||
|
||||
<!-- The version number for OSGi bundles. Has to be triple. Cannot be SNAPSHOT. -->
|
||||
<OSGI_VERSION>3.0.6</OSGI_VERSION>
|
||||
|
||||
|
@ -931,13 +934,6 @@
|
|||
<version>${iepse.artifact.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- special dependency jar to inject appserver classpath: -->
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
<version>${jbicomps.currentVersion}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>restjbiadapter</artifactId>
|
||||
|
@ -947,9 +943,9 @@
|
|||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>restbc-installer</artifactId>
|
||||
<version>${restbc.artifact.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>camelseimpl</artifactId>
|
||||
<version>${camelse.artifact.version}</version>
|
||||
|
|
|
@ -183,7 +183,6 @@
|
|||
<!-- required env. vars: -->
|
||||
<SRCROOT>${env.JV_SRCROOT}</SRCROOT>
|
||||
<TOOLROOT>${env.JV_TOOLROOT}</TOOLROOT>
|
||||
<gfbase>${env.JV_GFBASE}</gfbase>
|
||||
|
||||
<!-- this file is created by ant task in top pom, and used to filter resources: -->
|
||||
<version.properties>${SRCROOT}/bld/version.properties</version.properties>
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -55,9 +54,8 @@
|
|||
<version>3.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi-admin-common</artifactId>
|
||||
<version>1.1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
|
|
|
@ -107,16 +107,26 @@
|
|||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>bpelmodel</artifactId>
|
||||
</dependency>
|
||||
-->
|
||||
|
||||
-->
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<artifactId>jbi-admin-common</artifactId>
|
||||
<groupId>org.glassfish</groupId>
|
||||
<artifactId>javax.management.j2ee</artifactId>
|
||||
<version>3.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.faces</groupId>
|
||||
<artifactId>jsf-api</artifactId>
|
||||
<version>1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.el</groupId>
|
||||
<artifactId>el-api</artifactId>
|
||||
<version>2.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi-admin-common</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
|
|
|
@ -119,7 +119,7 @@
|
|||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi-admin-common</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
|
|
@ -124,7 +124,6 @@
|
|||
</goals>
|
||||
<configuration>
|
||||
<tasks>
|
||||
<property name="derbylibs" value="${JV_GFBASE}/javadb/lib" />
|
||||
<property name="derbydb" value="${project.build.directory}/javadb" />
|
||||
|
||||
<patternset id="jbicomps.junit.test.patternset" >
|
||||
|
@ -142,7 +141,6 @@
|
|||
<property name="project.build.testSourceDirectory" value="${project.build.testSourceDirectory}" />
|
||||
<property name="work.dir" value="${project.build.directory}" />
|
||||
|
||||
<property name="derbylibs" value="${derbylibs}" />
|
||||
<property name="derbydb" value="${derbydb}" />
|
||||
|
||||
<!-- no junit system properties are needed: -->
|
||||
|
@ -170,10 +168,6 @@
|
|||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>componentsl</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>debuggerbdi</artifactId>
|
||||
|
@ -225,7 +219,6 @@
|
|||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>js-engine</groupId>
|
||||
|
|
|
@ -249,7 +249,6 @@
|
|||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<version>2.0</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
|
|
@ -103,10 +103,8 @@
|
|||
</goals>
|
||||
<configuration>
|
||||
<tasks>
|
||||
<property name="derbylibs" value="${gfbase}/javadb/lib"/>
|
||||
<property name="derbydb" value="${project.build.directory}/javadb"/>
|
||||
<property name="junit.srcroot" value="${SRCROOT}"/>
|
||||
<property name="junit.gfbase" value="${gfbase}"/>
|
||||
<property name="junit.suite.classpath" refid="maven.test.classpath"/>
|
||||
<patternset id="jbicomps.junit.test.patternset">
|
||||
<include name="**/*Test.java"/>
|
||||
|
@ -119,11 +117,9 @@
|
|||
<property name="project.build.directory" value="${project.build.directory}"/>
|
||||
<property name="project.build.testSourceDirectory" value="${project.build.testSourceDirectory}"/>
|
||||
<property name="work.dir" value="${project.build.directory}"/>
|
||||
<property name="derbylibs" value="${derbylibs}"/>
|
||||
<property name="derbydb" value="${derbydb}"/>
|
||||
<propertyset id="jbicomps.junit.sysproperties">
|
||||
<propertyref name="junit.srcroot"/>
|
||||
<propertyref name="junit.gfbase"/>
|
||||
<propertyref name="junit.suite.classpath"/>
|
||||
</propertyset>
|
||||
<reference refid="maven.test.classpath"/>
|
||||
|
|
|
@ -160,17 +160,11 @@ java.lang.NoSuchMethodError: org.codehaus.plexus.util.cli.Commandline.createArg(
|
|||
</build>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<!-- <dependency>
|
||||
<groupId>ant</groupId>
|
||||
<dependency>
|
||||
<groupId>org.apache.ant</groupId>
|
||||
<artifactId>ant</artifactId>
|
||||
<version>1.6.5</version>
|
||||
</dependency> -->
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.ant</groupId>
|
||||
<artifactId>ant</artifactId>
|
||||
<version>1.7.1</version>
|
||||
</dependency>
|
||||
<version>1.7.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ant</groupId>
|
||||
<artifactId>ant-nodeps</artifactId>
|
||||
|
@ -283,11 +277,6 @@ java.lang.NoSuchMethodError: org.codehaus.plexus.util.cli.Commandline.createArg(
|
|||
<version>1.6.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>servlet-api</artifactId>
|
||||
<version>2.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sun.xml.bind</groupId>
|
||||
<artifactId>jaxb-xjc</artifactId>
|
||||
|
@ -549,27 +538,43 @@ java.lang.NoSuchMethodError: org.codehaus.plexus.util.cli.Commandline.createArg(
|
|||
<artifactId>serializer</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
<!-- open-esb dependency versions: -->
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<artifactId>jbi</artifactId>
|
||||
<version>1.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<artifactId>jbi-ext</artifactId>
|
||||
<version>1.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<artifactId>jbi-admin-common</artifactId>
|
||||
<version>1.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>opensymphony</groupId>
|
||||
<artifactId>quartz-all</artifactId>
|
||||
<version>1.6.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.java.hulp.i18ntask</groupId>
|
||||
<artifactId>net.java.hulp.i18ntask</artifactId>
|
||||
<version>${I18NTASK_VERSION}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.impl</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<!-- open-esb dependency versions: -->
|
||||
<dependency>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi</artifactId>
|
||||
<version>${openesb-core-version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi-ext</artifactId>
|
||||
<version>${openesb-core-version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi-admin-common</artifactId>
|
||||
<version>${openesb-core-version}</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
|
|
@ -85,11 +85,7 @@
|
|||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi-admin-common</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -120,5 +116,35 @@
|
|||
<groupId>xalan</groupId>
|
||||
<artifactId>xalan</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.persistence</groupId>
|
||||
<artifactId>persistence-api</artifactId>
|
||||
<version>1.0.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax</groupId>
|
||||
<artifactId>javaee-api</artifactId>
|
||||
<version>6.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>glassfish</groupId>
|
||||
<artifactId>appserv-rt</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>glassfish</groupId>
|
||||
<artifactId>appserv-admin</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>glassfish</groupId>
|
||||
<artifactId>appserv-se</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>glassfish</groupId>
|
||||
<artifactId>appserv-ext</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
@ -55,10 +55,6 @@
|
|||
<groupId>xerces</groupId>
|
||||
<artifactId>xercesImpl</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>camimpl</artifactId>
|
||||
|
|
|
@ -52,11 +52,7 @@
|
|||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi-admin-common</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
|
|
@ -100,11 +100,6 @@
|
|||
</dependency>-->
|
||||
<!-- TEST DEPENDENCIES-->
|
||||
<!--<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jmock</groupId>
|
||||
<artifactId>jmock</artifactId>
|
||||
<scope>test</scope>
|
||||
|
|
|
@ -231,13 +231,11 @@
|
|||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.impl</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>-->
|
||||
|
||||
</dependencies>
|
||||
|
|
|
@ -1,99 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project
|
||||
name="compileconf" default="run">
|
||||
|
||||
<target name="create-compileconf" >
|
||||
<!-- initialize properties for compileconf jar: -->
|
||||
<pathconvert property="compileconf_dir">
|
||||
<path>
|
||||
<pathelement location="${maven.repo.local}/jbicompsplatform/compileconf/${jbicomps.currentVersion}"/>
|
||||
</path>
|
||||
</pathconvert>
|
||||
<property name="compileconf_jar"
|
||||
value="${project.build.directory}${file.separator}compileconf-${jbicomps.currentVersion}.jar"
|
||||
/>
|
||||
<mkdir dir="${project.build.directory}"/>
|
||||
|
||||
<!--
|
||||
# prime maven repository with appserver jars that we link against
|
||||
# we do a clean install to avoid upgrade/downgrade issues:
|
||||
-->
|
||||
<delete dir="${compileconf_dir}" />
|
||||
<copy todir="${compileconf_dir}" preservelastmodified="true" overwrite="false" >
|
||||
<fileset dir="${gfbase}/lib" >
|
||||
<!-- files common to ee81 and glassfish -->
|
||||
<include name="activation.jar"/>
|
||||
<include name="ant/lib/ant.jar"/>
|
||||
<include name="appserv-admin.jar"/>
|
||||
<include name="appserv-rt.jar"/>
|
||||
<include name="j2ee.jar"/>
|
||||
<include name="jmxremote_optional.jar"/>
|
||||
<include name="mail.jar"/>
|
||||
|
||||
<!-- files specific to ee81 -->
|
||||
<include name="dom.jar"/>
|
||||
<include name="jaxrpc-impl.jar"/>
|
||||
<include name="jmxremote.jar"/>
|
||||
<include name="saaj-impl.jar"/>
|
||||
<include name="xalan.jar"/>
|
||||
<include name="xercesImpl.jar"/>
|
||||
|
||||
<!-- files specific to glassfish -->
|
||||
<include name="appserv-deployment-client.jar"/>
|
||||
<include name="appserv-ext.jar"/>
|
||||
<include name="appserv-se.jar"/>
|
||||
<include name="javaee.jar"/>
|
||||
<include name="jsf-impl.jar"/>
|
||||
<include name="webservices-rt.jar"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
|
||||
<!-- prime maven repository with imq jars that we link against -->
|
||||
<copy todir="${compileconf_dir}" preservelastmodified="true" overwrite="false" >
|
||||
<fileset dir="${gfbase}/imq/lib" >
|
||||
<!-- files common to ee81 and glassfish -->
|
||||
<include name="imq.jar"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
|
||||
<!-- prime maven repository with jbi jars that we link against -->
|
||||
<!--
|
||||
<copy todir="${compileconf_dir}" preservelastmodified="true" overwrite="false" >
|
||||
<fileset dir="${gfbase}/jbi/lib" >
|
||||
<include name="jbi.jar"/>
|
||||
<include name="jbi-admin-common.jar"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
-->
|
||||
|
||||
<!--
|
||||
# create compileconf.jar in 4 steps.
|
||||
-->
|
||||
|
||||
<!-- 1. set list of jars to include in the manifest class-path: -->
|
||||
<fileset id="jarlist" dir="${compileconf_dir}">
|
||||
<include name="**/*.jar"/>
|
||||
</fileset>
|
||||
|
||||
<!-- 2. delete the old jar if it is there: -->
|
||||
<delete file="${compileconf_jar}" />
|
||||
|
||||
<!-- 3. convert classpath to relative files names: -->
|
||||
<pathconvert dirsep="/" pathsep=" " property="jarlist" refid="jarlist">
|
||||
<!-- note: "from" attribute must be in local path format. RT 5/16/06 -->
|
||||
<map from="${compileconf_dir}${file.separator}" to="" />
|
||||
</pathconvert>
|
||||
|
||||
<!-- 4. create the jar.
|
||||
# NOTE: jar manifest classpaths are NOT recognized by javac prior to JDK 5.0.
|
||||
# See: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4212732
|
||||
-->
|
||||
<jar destfile="${compileconf_jar}">
|
||||
<manifest>
|
||||
<attribute name="Class-Path" value= "${jarlist}" />
|
||||
</manifest>
|
||||
</jar>
|
||||
|
||||
<echo message="Compile Classpath is ${jarlist}, output is ${compileconf_jar}" />
|
||||
</target>
|
||||
</project>
|
|
@ -45,39 +45,6 @@
|
|||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>top_clean</id>
|
||||
<phase>clean</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<tasks>
|
||||
<ant antfile="${SRCROOT}/global-common/m2.ant" dir="${basedir}" target="clean_top" >
|
||||
<property name="SRCROOT" value="${SRCROOT}" />
|
||||
<property name="maven.repo.local" value="${maven.repo.local}" />
|
||||
</ant>
|
||||
</tasks>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>${project.artifactId}-create-jar</id>
|
||||
<phase>clean</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<tasks>
|
||||
<ant antfile="m2.ant" dir="${basedir}" target="create-compileconf" >
|
||||
<property environment="env" />
|
||||
<property name="gfbase" value="${gfbase}" />
|
||||
<property name="maven.repo.local" value="${maven.repo.local}" />
|
||||
<property name="jbicomps.currentVersion" value="${jbicomps.currentVersion}" />
|
||||
<property name="project.build.directory" value="${project.build.directory}" />
|
||||
</ant>
|
||||
</tasks>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>download-ojdbc5</id>
|
||||
<phase>clean</phase>
|
||||
|
@ -249,21 +216,6 @@
|
|||
<file>${SRCROOT}/ojc-core/vendor-libs/woodstock/jars/webui-jsf-4.0.jar</file>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>install-compileconf</id>
|
||||
<phase>clean</phase>
|
||||
<goals>
|
||||
<goal>install-file</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<generatePom>true</generatePom>
|
||||
<packaging>jar</packaging>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
<version>${jbicomps.currentVersion}</version>
|
||||
<file>${project.build.directory}${file.separator}compileconf-${jbicomps.currentVersion}.jar</file>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>install-jinterop-j-interop</id>
|
||||
<phase>clean</phase>
|
||||
|
@ -804,51 +756,10 @@
|
|||
</execution>
|
||||
|
||||
<!-- OPEN-ESB dependencies -->
|
||||
<execution>
|
||||
<id>install-jbi</id>
|
||||
<phase>clean</phase>
|
||||
<goals>
|
||||
<goal>install-file</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<generatePom>true</generatePom>
|
||||
<packaging>jar</packaging>
|
||||
<groupId>open-esb</groupId>
|
||||
<artifactId>jbi</artifactId>
|
||||
<version>${OPEN_ESB_VERSION}</version>
|
||||
<file>${gfbase}/jbi/lib/jbi.jar</file>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>install-jbi-ext</id>
|
||||
<phase>clean</phase>
|
||||
<goals>
|
||||
<goal>install-file</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<generatePom>true</generatePom>
|
||||
<packaging>jar</packaging>
|
||||
<groupId>open-esb</groupId>
|
||||
<artifactId>jbi-ext</artifactId>
|
||||
<version>${OPEN_ESB_VERSION}</version>
|
||||
<file>${gfbase}/jbi/lib/jbi-ext.jar</file>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>install-jbi-admin-common</id>
|
||||
<phase>clean</phase>
|
||||
<goals>
|
||||
<goal>install-file</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<generatePom>true</generatePom>
|
||||
<packaging>jar</packaging>
|
||||
<groupId>open-esb</groupId>
|
||||
<artifactId>jbi-admin-common</artifactId>
|
||||
<version>1.1</version>
|
||||
<file>${gfbase}/jbi/lib/jbi-admin-common.jar</file>
|
||||
</configuration>
|
||||
</execution>
|
||||
<!-- openesb-core/jbi/api -->
|
||||
<!-- openesb-core/esb-packages/jbi-ext -->
|
||||
<!-- openesb-core/ri-clients/jbi-admin-common -->
|
||||
|
||||
<execution>
|
||||
<id>install-hulp-meas-itf</id>
|
||||
<phase>clean</phase>
|
||||
|
|
|
@ -102,7 +102,7 @@
|
|||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
|
|
@ -77,13 +77,12 @@
|
|||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.java.hulp.i18ntask</groupId>
|
||||
<artifactId>net.java.hulp.i18ntask</artifactId>
|
||||
<version>2.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
|
|
|
@ -93,7 +93,7 @@
|
|||
<artifactId>wsdl4j</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi</artifactId>
|
||||
</dependency>
|
||||
<!-- TEST DEPENDENCIES-->
|
||||
|
|
|
@ -79,13 +79,12 @@
|
|||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.java.hulp.i18ntask</groupId>
|
||||
<artifactId>net.java.hulp.i18ntask</artifactId>
|
||||
<version>2.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
|
|
|
@ -64,10 +64,6 @@
|
|||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax</groupId>
|
||||
<artifactId>javaee-api</artifactId>
|
||||
|
|
|
@ -72,6 +72,7 @@
|
|||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>servlet-api</artifactId>
|
||||
<version>2.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
|
|
@ -84,7 +84,7 @@
|
|||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
|
|
@ -58,14 +58,9 @@
|
|||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>componentsl</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>wsdl4j</groupId>
|
||||
|
|
|
@ -188,17 +188,15 @@
|
|||
<artifactId>jsr173_api</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.impl</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
@ -56,10 +56,6 @@
|
|||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>componentsl</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>encoder-fw</artifactId>
|
||||
|
|
|
@ -68,10 +68,6 @@
|
|||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>encoder-fw</artifactId>
|
||||
|
|
|
@ -143,10 +143,6 @@
|
|||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>encoder-fw</artifactId>
|
||||
|
|
|
@ -144,10 +144,6 @@
|
|||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>encoder-fw</artifactId>
|
||||
|
|
|
@ -137,10 +137,6 @@
|
|||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>encoder-fw</artifactId>
|
||||
|
|
|
@ -145,10 +145,6 @@
|
|||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>encoder-fw</artifactId>
|
||||
|
|
|
@ -143,10 +143,6 @@
|
|||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>encoder-fw</artifactId>
|
||||
|
|
|
@ -59,10 +59,6 @@
|
|||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>componentsl</artifactId>
|
||||
|
|
|
@ -77,10 +77,6 @@
|
|||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>etlmonitor</artifactId>
|
||||
|
@ -118,6 +114,16 @@
|
|||
<artifactId>webui-jsf</artifactId>
|
||||
<version>4.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.faces</groupId>
|
||||
<artifactId>jsf-api</artifactId>
|
||||
<version>1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>servlet-api</artifactId>
|
||||
<version>2.5</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<properties>
|
||||
<msgs.package>com/sun/jbi/cam/plugin/etlse/model</msgs.package>
|
||||
|
|
|
@ -171,11 +171,6 @@
|
|||
<version>build210</version>
|
||||
</dependency>
|
||||
<!-- TEST DEPENDENCIES-->
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jmock</groupId>
|
||||
<artifactId>jmock</artifactId>
|
||||
|
|
|
@ -180,12 +180,18 @@
|
|||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>compositelock</artifactId>
|
||||
</dependency>
|
||||
<!-- TEST DEPENDENCIES-->
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
<scope>test</scope>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.impl</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<!-- TEST DEPENDENCIES-->
|
||||
<dependency>
|
||||
<groupId>jmock</groupId>
|
||||
<artifactId>jmock</artifactId>
|
||||
|
@ -198,20 +204,7 @@
|
|||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.impl</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi-admin-common</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
|
|
@ -163,13 +163,11 @@
|
|||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.impl</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
|
|
@ -93,10 +93,10 @@
|
|||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>encoder-fw</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<!--<dependency>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi-ext</artifactId>
|
||||
</dependency>
|
||||
</dependency>-->
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>qos</artifactId>
|
||||
|
@ -106,7 +106,17 @@
|
|||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>compositelock</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>oro</groupId>
|
||||
<artifactId>oro</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- TEST DEPENDENCIES-->
|
||||
<dependency>
|
||||
<groupId>org.apache.derby</groupId>
|
||||
<artifactId>derbyclient</artifactId>
|
||||
|
@ -122,23 +132,5 @@
|
|||
<artifactId>ant-junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>oro</groupId>
|
||||
<artifactId>oro</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<!-- TEST DEPENDENCIES-->
|
||||
<dependency>
|
||||
<groupId>com.sun.jbi</groupId>
|
||||
<artifactId>componentsl</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
@ -199,13 +199,11 @@
|
|||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.impl</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
|
|
@ -145,11 +145,6 @@
|
|||
<artifactId>componentsl</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>encoder-fw</artifactId>
|
||||
|
@ -183,19 +178,14 @@
|
|||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.impl</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
||||
<!-- TEST DEPENDENCIES-->
|
||||
|
||||
<dependency>
|
||||
<groupId>jmock</groupId>
|
||||
<artifactId>jmock</artifactId>
|
||||
|
|
|
@ -216,13 +216,11 @@
|
|||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.impl</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
!.gitignore
|
||||
|
||||
target/
|
|
@ -1,157 +1,118 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
# BEGIN_HEADER - DO NOT EDIT
|
||||
#
|
||||
# The contents of this file are subject to the terms
|
||||
# of the Common Development and Distribution License
|
||||
# (the "License"). You may not use this file except
|
||||
# in compliance with the License.
|
||||
#
|
||||
# You can obtain a copy of the license at
|
||||
# https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
# See the License for the specific language governing
|
||||
# permissions and limitations under the License.
|
||||
#
|
||||
# When distributing Covered Code, include this CDDL
|
||||
# HEADER in each file and include the License file at
|
||||
# https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
# If applicable add the following below this CDDL HEADER,
|
||||
# with the fields enclosed by brackets "[]" replaced with
|
||||
# your own identifying information: Portions Copyright
|
||||
# [year] [name of copyright owner]
|
||||
-->
|
||||
|
||||
<!--
|
||||
# @(#)pom.xml
|
||||
# Copyright 2006-2008 Sun Microsystems, Inc. All Rights Reserved.
|
||||
#
|
||||
# END_HEADER - DO NOT EDIT
|
||||
-->
|
||||
<project>
|
||||
<parent>
|
||||
<artifactId>build-common</artifactId>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<version>1.1</version>
|
||||
<relativePath>../../build-common</relativePath>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
|
||||
<parent>
|
||||
<groupId>net.open-esb.components.httpbc</groupId>
|
||||
<artifactId>parent</artifactId>
|
||||
<version>${httpsoapbc.artifact.version}</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>httpsoapbcimpl</artifactId>
|
||||
<name>httpsoapbcimpl</name>
|
||||
<name>OpenESB - Components - HTTPBC - Implementation</name>
|
||||
<version>${httpsoapbc.artifact.version}</version>
|
||||
<description>httpsoapbcimpl description</description>
|
||||
|
||||
<properties>
|
||||
<component.name>sun-http-binding</component.name>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>${project.artifactId}-ant-junit</id>
|
||||
<phase>test</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<tasks>
|
||||
<patternset id="jbicomps.junit.test.patternset" >
|
||||
<exclude name="**/framework/*.java"/>
|
||||
<exclude name="**/integrationtest/*.java"/>
|
||||
<exclude name="**/test/jbi/integration/**/*.java"/>
|
||||
<include name="**/*Test*.java"/>
|
||||
</patternset>
|
||||
|
||||
<ant antfile="${SRCROOT}/global-common/m2.ant"
|
||||
dir="${project.build.sourceDirectory}/.." target="run_junit" >
|
||||
<property name="maven.test.skip" value="${maven.test.skip}" />
|
||||
<property name="maven.repo.local" value="${maven.repo.local}" />
|
||||
<property name="project.artifactId" value="${project.artifactId}" />
|
||||
<property name="project.build.directory" value="${project.build.directory}" />
|
||||
<property name="project.build.testSourceDirectory" value="${project.build.testSourceDirectory}" />
|
||||
|
||||
<!-- no junit system properties are needed: -->
|
||||
<propertyset id="jbicomps.junit.sysproperties" />
|
||||
|
||||
<reference refid="maven.test.classpath"/>
|
||||
<reference refid="jbicomps.junit.sysproperties"/>
|
||||
<reference refid="jbicomps.junit.test.patternset"/>
|
||||
</ant>
|
||||
</tasks>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifestEntries>
|
||||
<Component-Version>${httpbc.artifact.version}</Component-Version>
|
||||
<Component-Version>${project.version}</Component-Version>
|
||||
<Component-Name>${component.name}</Component-Name>
|
||||
</manifestEntries>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>true</skip>
|
||||
<excludes>
|
||||
<exclude>**/framework/*.java</exclude>
|
||||
<exclude>**/integrationtest/*.java</exclude>
|
||||
<exclude>**/test/jbi/integration/**/*.java</exclude>
|
||||
<exclude>**/validator/*.java</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<!-- OpenESB Components Common dependencies -->
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>componentsl</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>jbicompsplatform</groupId>
|
||||
<artifactId>compileconf</artifactId>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>qos</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>sun-identity</groupId>
|
||||
<artifactId>amclientsdk</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-httpclient</groupId>
|
||||
<artifactId>commons-httpclient</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
<version>2.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<artifactId>jbi-ext</artifactId>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>common-util</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Metro dependencies -->
|
||||
<dependency>
|
||||
<groupId>org.glassfish.metro</groupId>
|
||||
<artifactId>webservices-rt</artifactId>
|
||||
<version>2.2.0-4</version>
|
||||
</dependency>
|
||||
|
||||
<!-- TEST DEPENDENCIES-->
|
||||
<!-- Grizzly dependencies -->
|
||||
<dependency>
|
||||
<groupId>org.glassfish.grizzly</groupId>
|
||||
<artifactId>grizzly-http-server</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Glassfish dependencies -->
|
||||
<!-- Must be used only in the case of Glassfish container -->
|
||||
<dependency>
|
||||
<groupId>org.glassfish.main.security</groupId>
|
||||
<artifactId>security-ee</artifactId>
|
||||
<version>4.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.sf.hulp.meas</groupId>
|
||||
<artifactId>net.sf.hulp.meas.itf</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi-ext</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- TEST DEPENDENCIES -->
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jmock</groupId>
|
||||
<artifactId>jmock</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-esb</groupId>
|
||||
<groupId>net.open-esb.core</groupId>
|
||||
<artifactId>jbi-admin-common</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>qos</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>open-jbi-components</groupId>
|
||||
<artifactId>common-util</artifactId>
|
||||
<groupId>org.apache.ant</groupId>
|
||||
<artifactId>ant</artifactId>
|
||||
<version>1.9.4</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
@ -1,449 +0,0 @@
|
|||
/*
|
||||
* BEGIN_HEADER - DO NOT EDIT
|
||||
*
|
||||
* The contents of this file are subject to the terms
|
||||
* of the Common Development and Distribution License
|
||||
* (the "License"). You may not use this file except
|
||||
* in compliance with the License.
|
||||
*
|
||||
* You can obtain a copy of the license at
|
||||
* https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
* See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*
|
||||
* When distributing Covered Code, include this CDDL
|
||||
* HEADER in each file and include the License file at
|
||||
* https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
* If applicable add the following below this CDDL HEADER,
|
||||
* with the fields enclosed by brackets "[]" replaced with
|
||||
* your own identifying information: Portions Copyright
|
||||
* [year] [name of copyright owner]
|
||||
*/
|
||||
|
||||
/*
|
||||
* @(#)BCCoyoteConnector.java
|
||||
*
|
||||
* Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* END_HEADER - DO NOT EDIT
|
||||
*/
|
||||
|
||||
package com.sun.jbi.httpsoapbc.embedded;
|
||||
|
||||
import java.util.Timer;
|
||||
|
||||
import org.apache.catalina.LifecycleException;
|
||||
import org.apache.catalina.Request;
|
||||
import org.apache.catalina.Response;
|
||||
import org.apache.coyote.tomcat5.CoyoteConnector;
|
||||
import org.apache.coyote.tomcat5.CoyoteResponse;
|
||||
|
||||
import com.sun.jbi.httpsoapbc.HttpSoapBindingLifeCycle;
|
||||
|
||||
public class BCCoyoteConnector extends CoyoteConnector{
|
||||
|
||||
private static final String USE_COYOTE_CONNECTOR =
|
||||
"com.sun.enterprise.web.connector.useCoyoteConnector";
|
||||
|
||||
private static final String GRIZZLY_CONNECTOR =
|
||||
"com.sun.enterprise.web.connector.grizzly.GrizzlyHttpProtocol";
|
||||
|
||||
|
||||
/**
|
||||
* Are we recycling objects
|
||||
*/
|
||||
protected boolean recycleObjects;
|
||||
|
||||
|
||||
/**
|
||||
* The number of acceptor threads.
|
||||
*/
|
||||
protected int maxAcceptWorkerThreads;
|
||||
|
||||
|
||||
/**
|
||||
* The number of reader threads.
|
||||
*/
|
||||
protected int maxReadWorkerThreads;
|
||||
|
||||
|
||||
/**
|
||||
* The request timeout value used by the processor threads.
|
||||
*/
|
||||
protected int processorWorkerThreadsTimeout;
|
||||
|
||||
|
||||
/**
|
||||
* The increment number used by the processor threads.
|
||||
*/
|
||||
protected int minProcessorWorkerThreadsIncrement;
|
||||
|
||||
|
||||
/**
|
||||
* The size of the accept queue.
|
||||
*/
|
||||
protected int minAcceptQueueLength;
|
||||
|
||||
|
||||
/**
|
||||
* The size of the read queue
|
||||
*/
|
||||
protected int minReadQueueLength;
|
||||
|
||||
|
||||
/**
|
||||
* The size of the processor queue.
|
||||
*/
|
||||
protected int minProcessorQueueLength;
|
||||
|
||||
|
||||
/**
|
||||
* Use direct or non direct byte buffer.
|
||||
*/
|
||||
protected boolean useDirectByteBuffer;
|
||||
|
||||
/*
|
||||
* Number of seconds before idle keep-alive connections expire
|
||||
*/
|
||||
private int keepAliveTimeoutInSeconds;
|
||||
|
||||
/*
|
||||
* Number of keep-alive threads
|
||||
*/
|
||||
private int keepAliveThreadCount;
|
||||
|
||||
/*
|
||||
* Specifies whether response chunking is enabled/disabled
|
||||
*/
|
||||
private boolean chunkingDisabled;
|
||||
|
||||
/**
|
||||
* Maximum pending connection before refusing requests.
|
||||
*/
|
||||
private int maxPendingCount = 4096;
|
||||
|
||||
|
||||
/**
|
||||
* Set the number of <code>Selector</code> used by Grizzly.
|
||||
*/
|
||||
public int selectorReadThreadsCount = 0;
|
||||
|
||||
private int maxQueueSizeInBytes = -1;
|
||||
|
||||
private HttpSoapBindingLifeCycle lifeCycle;
|
||||
|
||||
public BCCoyoteConnector(HttpSoapBindingLifeCycle lifeCycle) {
|
||||
boolean coyoteOn = false;
|
||||
if (System.getProperty(USE_COYOTE_CONNECTOR) != null){
|
||||
coyoteOn =
|
||||
Boolean.valueOf(System.getProperty(USE_COYOTE_CONNECTOR))
|
||||
.booleanValue();
|
||||
}
|
||||
|
||||
// By default, turn on the Coyote Connector
|
||||
if (!coyoteOn)
|
||||
setProtocolHandlerClassName(GRIZZLY_CONNECTOR);
|
||||
|
||||
this.lifeCycle = lifeCycle;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Enables or disables chunked encoding for any responses returned by this
|
||||
* Connector.
|
||||
*
|
||||
* @param chunkingDisabled true if chunking is to be disabled, false
|
||||
* otherwise
|
||||
*/
|
||||
public void setChunkingDisabled(boolean chunkingDisabled) {
|
||||
this.chunkingDisabled = chunkingDisabled;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return true if chunking is disabled on this Connector, and false
|
||||
* otherwise
|
||||
*/
|
||||
public boolean isChunkingDisabled() {
|
||||
return this.chunkingDisabled;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create (or allocate) and return a Request object suitable for
|
||||
* specifying the contents of a Request to the responsible Container.
|
||||
*/
|
||||
public Request createRequest() {
|
||||
|
||||
BCCoyoteRequest request = new BCCoyoteRequest();
|
||||
request.setConnector(this);
|
||||
return (request);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates and returns Response object.
|
||||
*
|
||||
* @return Response object
|
||||
*/
|
||||
public Response createResponse() {
|
||||
|
||||
//CoyoteResponse response = new CoyoteResponse(isChunkingDisabled());
|
||||
CoyoteResponse response = new BCCoyoteResponse(isChunkingDisabled());
|
||||
response.setConnector(this);
|
||||
return (response);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the number of seconds before a keep-alive connection that has
|
||||
* been idle times out and is closed.
|
||||
*
|
||||
* @return Keep-alive timeout in number of seconds
|
||||
*/
|
||||
public int getKeepAliveTimeoutInSeconds() {
|
||||
return keepAliveTimeoutInSeconds;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the number of seconds before a keep-alive connection that has
|
||||
* been idle times out and is closed.
|
||||
*
|
||||
* @param timeout Keep-alive timeout in number of seconds
|
||||
*/
|
||||
public void setKeepAliveTimeoutInSeconds(int timeout) {
|
||||
keepAliveTimeoutInSeconds = timeout;
|
||||
setProperty("keepAliveTimeoutInSeconds", String.valueOf(timeout));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the number of keep-alive threads.
|
||||
*
|
||||
* @return Number of keep-alive threads
|
||||
*/
|
||||
public int getKeepAliveThreadCount() {
|
||||
return keepAliveThreadCount;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the number of keep-alive threads.
|
||||
*
|
||||
* @param threadCount Number of keep-alive threads
|
||||
*/
|
||||
public void setKeepAliveThreadCount(int threadCount) {
|
||||
keepAliveThreadCount = threadCount;
|
||||
setProperty("keepAliveThreadCount", String.valueOf(threadCount));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the maximum pending connection this <code>Connector</code>
|
||||
* can handle.
|
||||
*/
|
||||
public void setMaxPendingConnection(int maxPendingCount){
|
||||
this.maxPendingCount = maxPendingCount;
|
||||
setProperty("maxPendingConnection", String.valueOf(maxPendingCount));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the maximum pending connection.
|
||||
*/
|
||||
public int getMaxPendingConnection(){
|
||||
return maxPendingCount;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the <code>recycle-tasks</code> used by this <code>Selector</code>
|
||||
*/
|
||||
public void setRecycleObjects(boolean recycleObjects){
|
||||
this.recycleObjects= recycleObjects;
|
||||
setProperty("recycleObjects",
|
||||
String.valueOf(recycleObjects));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the <code>recycle-tasks</code> used by this
|
||||
* <code>Selector</code>
|
||||
*/
|
||||
public boolean getRecycleObjects(){
|
||||
return recycleObjects;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the <code>reader-thread</code> from domian.xml.
|
||||
*/
|
||||
public void setMaxReadWorkerThreads(int maxReadWorkerThreads){
|
||||
this.maxReadWorkerThreads = maxReadWorkerThreads;
|
||||
setProperty("maxReadWorkerThreads",
|
||||
String.valueOf(maxReadWorkerThreads));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the <code>read-thread</code> used by this <code>Selector</code>
|
||||
*/
|
||||
public int getMaxReadWorkerThreads(){
|
||||
return maxReadWorkerThreads;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the <code>reader-thread</code> from domian.xml.
|
||||
*/
|
||||
public void setMaxAcceptWorkerThreads(int maxAcceptWorkerThreads){
|
||||
this.maxAcceptWorkerThreads = maxAcceptWorkerThreads;
|
||||
setProperty("maxAcceptWorkerThreads",
|
||||
String.valueOf(maxAcceptWorkerThreads));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the <code>read-thread</code> used by this <code>Selector</code>
|
||||
*/
|
||||
public int getMaxAcceptWorkerThreads(){
|
||||
return maxAcceptWorkerThreads;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the <code>acceptor-queue-length</code> value
|
||||
* on this <code>Selector</code>
|
||||
*/
|
||||
public void setMinAcceptQueueLength(int minAcceptQueueLength){
|
||||
this.minAcceptQueueLength = minAcceptQueueLength;
|
||||
setProperty("minAcceptQueueLength",
|
||||
String.valueOf(minAcceptQueueLength));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the <code>acceptor-queue-length</code> value
|
||||
* on this <code>Selector</code>
|
||||
*/
|
||||
public int getMinAcceptQueueLength(){
|
||||
return minAcceptQueueLength;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the <code>reader-queue-length</code> value
|
||||
* on this <code>Selector</code>
|
||||
*/
|
||||
public void setMinReadQueueLength(int minReadQueueLength){
|
||||
this.minReadQueueLength = minReadQueueLength;
|
||||
setProperty("minReadQueueLength",
|
||||
String.valueOf(minReadQueueLength));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the <code>reader-queue-length</code> value
|
||||
* on this <code>Selector</code>
|
||||
*/
|
||||
public int getMinReadQueueLength(){
|
||||
return minReadQueueLength;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the <code>processor-queue-length</code> value
|
||||
* on this <code>Selector</code>
|
||||
*/
|
||||
public void setMinProcessorQueueLength(int minProcessorQueueLength){
|
||||
this.minProcessorQueueLength = minProcessorQueueLength;
|
||||
setProperty("minProcessorQueueLength",
|
||||
String.valueOf(minProcessorQueueLength));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the <code>processor-queue-length</code> value
|
||||
* on this <code>Selector</code>
|
||||
*/
|
||||
public int getMinProcessorQueueLength(){
|
||||
return minProcessorQueueLength;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the <code>use-nio-non-blocking</code> by this <code>Selector</code>
|
||||
*/
|
||||
public void setUseDirectByteBuffer(boolean useDirectByteBuffer){
|
||||
this.useDirectByteBuffer = useDirectByteBuffer;
|
||||
setProperty("useDirectByteBuffer",
|
||||
String.valueOf(useDirectByteBuffer));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the <code>use-nio-non-blocking</code> used by this
|
||||
* <code>Selector</code>
|
||||
*/
|
||||
public boolean getUseDirectByteBuffer(){
|
||||
return useDirectByteBuffer;
|
||||
}
|
||||
|
||||
|
||||
public void setProcessorWorkerThreadsTimeout(int timeout){
|
||||
this.processorWorkerThreadsTimeout = timeout;
|
||||
setProperty("processorWorkerThreadsTimeout",
|
||||
String.valueOf(timeout));
|
||||
}
|
||||
|
||||
|
||||
public int getProcessorWorkerThreadsTimeout(){
|
||||
return processorWorkerThreadsTimeout;
|
||||
}
|
||||
|
||||
|
||||
public void setProcessorWorkerThreadsIncrement(int increment){
|
||||
this.minProcessorWorkerThreadsIncrement = increment;
|
||||
setProperty("processorThreadsIncrement",
|
||||
String.valueOf(increment));
|
||||
}
|
||||
|
||||
|
||||
public int getMinProcessorWorkerThreadsIncrement(){
|
||||
return minProcessorWorkerThreadsIncrement;
|
||||
}
|
||||
|
||||
public void setSelectorReadThreadsCount(int selectorReadThreadsCount){
|
||||
setProperty("selectorReadThreadsCount",
|
||||
String.valueOf(selectorReadThreadsCount));
|
||||
}
|
||||
|
||||
public void start() throws LifecycleException {
|
||||
super.start();
|
||||
|
||||
com.sun.enterprise.web.connector.grizzly.GrizzlyHttpProtocol protocolHandler =
|
||||
(com.sun.enterprise.web.connector.grizzly.GrizzlyHttpProtocol)getProtocolHandler();
|
||||
com.sun.enterprise.web.connector.grizzly.SelectorThread selThread = protocolHandler.selectorThread();
|
||||
|
||||
if (selThread.getProcessorPipeline() instanceof LinkedListThrottlePipeline) {
|
||||
LinkedListThrottlePipeline pipeline = (LinkedListThrottlePipeline)selThread.getProcessorPipeline();
|
||||
pipeline.setHttpSoapBindingLifeCycle(lifeCycle);
|
||||
}
|
||||
}
|
||||
|
||||
public void stop() throws LifecycleException {
|
||||
com.sun.enterprise.web.connector.grizzly.GrizzlyHttpProtocol protocolHandler =
|
||||
(com.sun.enterprise.web.connector.grizzly.GrizzlyHttpProtocol)getProtocolHandler();
|
||||
com.sun.enterprise.web.connector.grizzly.SelectorThread selThread = protocolHandler.selectorThread();
|
||||
|
||||
if (selThread.getProcessorPipeline() instanceof LinkedListThrottlePipeline) {
|
||||
LinkedListThrottlePipeline pipeline = (LinkedListThrottlePipeline)selThread.getProcessorPipeline();
|
||||
pipeline.cleanup();
|
||||
}
|
||||
super.stop();
|
||||
}
|
||||
}
|
|
@ -1,345 +0,0 @@
|
|||
/*
|
||||
* BEGIN_HEADER - DO NOT EDIT
|
||||
*
|
||||
* The contents of this file are subject to the terms
|
||||
* of the Common Development and Distribution License
|
||||
* (the "License"). You may not use this file except
|
||||
* in compliance with the License.
|
||||
*
|
||||
* You can obtain a copy of the license at
|
||||
* https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
* See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*
|
||||
* When distributing Covered Code, include this CDDL
|
||||
* HEADER in each file and include the License file at
|
||||
* https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
* If applicable add the following below this CDDL HEADER,
|
||||
* with the fields enclosed by brackets "[]" replaced with
|
||||
* your own identifying information: Portions Copyright
|
||||
* [year] [name of copyright owner]
|
||||
*/
|
||||
|
||||
/*
|
||||
* @(#)BCCoyoteRequest.java
|
||||
*
|
||||
* Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* END_HEADER - DO NOT EDIT
|
||||
*/
|
||||
|
||||
package com.sun.jbi.httpsoapbc.embedded;
|
||||
|
||||
import com.sun.jbi.internationalization.Messages;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.http.Cookie;
|
||||
|
||||
import org.apache.catalina.Context;
|
||||
import org.apache.catalina.Globals;
|
||||
import org.apache.coyote.tomcat5.CoyoteRequest;
|
||||
import org.apache.coyote.tomcat5.CoyoteResponse;
|
||||
import org.apache.coyote.tomcat5.CoyoteConnector;
|
||||
import org.apache.coyote.tomcat5.CoyoteInputStream;
|
||||
import org.apache.coyote.tomcat5.CoyoteReader;
|
||||
import org.apache.coyote.tomcat5.InputBuffer;
|
||||
import org.apache.tomcat.util.http.Parameters;
|
||||
import com.sun.enterprise.web.PwcWebModule;
|
||||
import com.sun.enterprise.web.session.SessionCookieConfig;
|
||||
|
||||
/**
|
||||
* Customized version of the Tomcat 5 CoyoteRequest
|
||||
* This is required for supporting Web Programmatic Login and setting the
|
||||
* request encoding (charset).
|
||||
*
|
||||
*/
|
||||
public class BCCoyoteRequest extends CoyoteRequest {
|
||||
|
||||
private static final Messages mMessages =
|
||||
Messages.getMessages(BCCoyoteRequest.class);
|
||||
|
||||
//private static Logger logger = LogDomains.getLogger(LogDomains.PWC_LOGGER);
|
||||
private final static Logger logger =
|
||||
Messages.getLogger(BCCoyoteRequest.class);
|
||||
|
||||
private boolean requestEncodingSet = false;
|
||||
|
||||
// START SJSAS 6346738
|
||||
private byte[] formData = null;
|
||||
private int formDataLen = 0;
|
||||
// END SJSAS 6346738
|
||||
|
||||
public void setContext(Context ctx) {
|
||||
super.setContext(ctx);
|
||||
CoyoteResponse response = (CoyoteResponse) getResponse();
|
||||
// Assert response!=null
|
||||
if (response != null) {
|
||||
String[] cacheControls = ((PwcWebModule) ctx).getCacheControls();
|
||||
for (int i=0; cacheControls!=null && i<cacheControls.length; i++) {
|
||||
response.addHeader("Cache-Control", cacheControls[i]);
|
||||
}
|
||||
}
|
||||
|
||||
requestEncodingSet = false;
|
||||
}
|
||||
|
||||
public BufferedReader getReader() throws IOException {
|
||||
setRequestEncoding();
|
||||
return super.getReader();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the character encoding for this Request.
|
||||
*
|
||||
* If there is no request charset specified in the request, determines and
|
||||
* sets the request charset using the locale-charset-info,
|
||||
* locale-charset-map, and parameter-encoding elements provided in the
|
||||
* sun-web.xml.
|
||||
*/
|
||||
public String getCharacterEncoding() {
|
||||
String enc = super.getCharacterEncoding();
|
||||
if (enc != null) {
|
||||
return enc;
|
||||
}
|
||||
|
||||
setRequestEncoding();
|
||||
return super.getCharacterEncoding();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Configures the given JSESSIONID cookie with the cookie-properties from
|
||||
* sun-web.xml.
|
||||
*
|
||||
* @param cookie The JSESSIONID cookie to be configured
|
||||
*/
|
||||
public void configureSessionCookie(Cookie cookie) {
|
||||
|
||||
super.configureSessionCookie(cookie);
|
||||
|
||||
PwcWebModule wm = (PwcWebModule) getContext();
|
||||
SessionCookieConfig cookieConfig = wm.getSessionCookieConfig();
|
||||
|
||||
if (cookieConfig != null) {
|
||||
|
||||
String name = cookieConfig.getName();
|
||||
if (name != null && !name.equals(Globals.SESSION_COOKIE_NAME)) {
|
||||
logger.log(Level.WARNING,
|
||||
"HTTPBC-W00619.Illegal_cookie_name",
|
||||
new String[] { name, Globals.SESSION_COOKIE_NAME });
|
||||
}
|
||||
|
||||
if (cookieConfig.getPath() != null) {
|
||||
cookie.setPath(cookieConfig.getPath());
|
||||
}
|
||||
|
||||
cookie.setMaxAge(cookieConfig.getMaxAge());
|
||||
|
||||
if (cookieConfig.getDomain() != null) {
|
||||
cookie.setDomain(cookieConfig.getDomain());
|
||||
}
|
||||
|
||||
if (cookieConfig.getComment() != null) {
|
||||
cookie.setVersion(1);
|
||||
cookie.setComment(cookieConfig.getComment());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// START SJSAS 6346738
|
||||
public void recycle() {
|
||||
super.recycle();
|
||||
formDataLen = 0;
|
||||
}
|
||||
// END SJSAS 6346738
|
||||
|
||||
|
||||
/**
|
||||
* If there is no request charset specified in the request, determines and
|
||||
* sets the request charset using the locale-charset-info,
|
||||
* locale-charset-map, and parameter-encoding elements provided in the
|
||||
* sun-web.xml.
|
||||
*/
|
||||
private void setRequestEncoding() {
|
||||
|
||||
if (requestEncodingSet) {
|
||||
return;
|
||||
}
|
||||
|
||||
requestEncodingSet = true;
|
||||
|
||||
if (super.getCharacterEncoding() != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
PwcWebModule wm = (PwcWebModule) getContext();
|
||||
|
||||
String encoding = getFormHintFieldEncoding(wm);
|
||||
if (encoding == null) {
|
||||
encoding = wm.getDefaultCharset();
|
||||
if (encoding == null && wm.hasLocaleToCharsetMapping()) {
|
||||
encoding = wm.mapLocalesToCharset(getLocales());
|
||||
}
|
||||
}
|
||||
|
||||
if (encoding != null) {
|
||||
try {
|
||||
setCharacterEncoding(encoding);
|
||||
} catch (UnsupportedEncodingException uee) {
|
||||
if (logger.isLoggable(Level.WARNING)) {
|
||||
String text = mMessages.getString("HTTPBC-W00611.Unsupported_character_encoding", new Object[] { encoding, uee.getLocalizedMessage() } );
|
||||
logger.log(Level.WARNING, "text", uee);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Returns the value of the query parameter whose name
|
||||
* corresponds to the value of the form-hint-field attribute of the
|
||||
* <parameter-encoding> element in sun-web.xml.
|
||||
*
|
||||
* @return The value of the query parameter whose name corresponds to the
|
||||
* value of the form-hint-field attribute in sun-web.xml, or null if the
|
||||
* request does not have any query string, or the query string does not
|
||||
* contain a query parameter with that name
|
||||
*/
|
||||
private String getFormHintFieldEncoding(PwcWebModule wm) {
|
||||
|
||||
String encoding = null;
|
||||
|
||||
String formHintField = wm.getFormHintField();
|
||||
if (formHintField == null){
|
||||
return null;
|
||||
}
|
||||
|
||||
if ("POST".equalsIgnoreCase(getMethod())) {
|
||||
// POST
|
||||
encoding = getPostDataEncoding(formHintField);
|
||||
} else {
|
||||
String query = getQueryString();
|
||||
if (query != null) {
|
||||
encoding = parseFormHintField(query, formHintField);
|
||||
}
|
||||
}
|
||||
|
||||
return encoding;
|
||||
}
|
||||
|
||||
|
||||
private String getPostDataEncoding(String formHintField) {
|
||||
|
||||
if (!getMethod().equalsIgnoreCase("POST")) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String contentType = getContentType();
|
||||
if (contentType == null)
|
||||
contentType = "";
|
||||
int semicolon = contentType.indexOf(';');
|
||||
if (semicolon >= 0) {
|
||||
contentType = contentType.substring(0, semicolon).trim();
|
||||
} else {
|
||||
contentType = contentType.trim();
|
||||
}
|
||||
if (!("application/x-www-form-urlencoded".equals(contentType))) {
|
||||
return null;
|
||||
}
|
||||
|
||||
int len = getContentLength();
|
||||
if (len <= 0) {
|
||||
return null;
|
||||
}
|
||||
int maxPostSize = ((CoyoteConnector) connector).getMaxPostSize();
|
||||
if ((maxPostSize > 0) && (len > maxPostSize)) {
|
||||
if (logger.isLoggable(Level.WARNING)) {
|
||||
logger.log(Level.WARNING, "HTTPBC-W00610.Post_size_too_large",
|
||||
new Object[] { Integer.valueOf(len), Integer.valueOf(maxPostSize) });
|
||||
}
|
||||
throw new IllegalStateException("Post too large");
|
||||
}
|
||||
|
||||
String encoding = null;
|
||||
|
||||
try {
|
||||
formData = null;
|
||||
if (len < CACHED_POST_LEN) {
|
||||
if (postData == null)
|
||||
postData = new byte[CACHED_POST_LEN];
|
||||
formData = postData;
|
||||
} else {
|
||||
formData = new byte[len];
|
||||
}
|
||||
int actualLen = readPostBody(formData, len);
|
||||
if (actualLen == len) {
|
||||
// START SJSAS 6346738
|
||||
formDataLen = actualLen;
|
||||
// END SJSAS 6346738
|
||||
String formDataString = new String(formData).substring(0, len);
|
||||
encoding = parseFormHintField(formDataString, formHintField);
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
; // Ignore
|
||||
}
|
||||
|
||||
return encoding;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Parses the value of the specified form-hint-field from the given
|
||||
* parameter string.
|
||||
*
|
||||
* @param paramsString Parameter string
|
||||
* @param formHintField From-hint-field
|
||||
*
|
||||
* @return Value of form-hint-field, or null if not found
|
||||
*/
|
||||
private String parseFormHintField(String paramsString,
|
||||
String formHintField) {
|
||||
|
||||
String encoding = null;
|
||||
|
||||
formHintField += "=";
|
||||
int index = paramsString.indexOf(formHintField);
|
||||
if (index != -1) {
|
||||
int endIndex = paramsString.indexOf('&', index);
|
||||
if (endIndex != -1) {
|
||||
encoding = paramsString.substring(
|
||||
index + formHintField.length(), endIndex);
|
||||
} else {
|
||||
encoding = paramsString.substring(
|
||||
index + formHintField.length());
|
||||
}
|
||||
}
|
||||
|
||||
return encoding;
|
||||
}
|
||||
|
||||
|
||||
// START SJSAS 6346738
|
||||
/**
|
||||
* Gets the POST body of this request.
|
||||
*
|
||||
* @return The POST body of this request
|
||||
*/
|
||||
protected byte[] getPostBody() throws IOException {
|
||||
|
||||
if (formDataLen > 0) {
|
||||
// POST body already read
|
||||
return formData;
|
||||
} else {
|
||||
return super.getPostBody();
|
||||
}
|
||||
}
|
||||
// END SJSAS 6346738
|
||||
}
|
|
@ -1,59 +0,0 @@
|
|||
/*
|
||||
* BEGIN_HEADER - DO NOT EDIT
|
||||
*
|
||||
* The contents of this file are subject to the terms
|
||||
* of the Common Development and Distribution License
|
||||
* (the "License"). You may not use this file except
|
||||
* in compliance with the License.
|
||||
*
|
||||
* You can obtain a copy of the license at
|
||||
* https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
* See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*
|
||||
* When distributing Covered Code, include this CDDL
|
||||
* HEADER in each file and include the License file at
|
||||
* https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
* If applicable add the following below this CDDL HEADER,
|
||||
* with the fields enclosed by brackets "[]" replaced with
|
||||
* your own identifying information: Portions Copyright
|
||||
* [year] [name of copyright owner]
|
||||
*/
|
||||
|
||||
/*
|
||||
* @(#)BCCoyoteResponse.java
|
||||
*
|
||||
* Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* END_HEADER - DO NOT EDIT
|
||||
*/
|
||||
|
||||
package com.sun.jbi.httpsoapbc.embedded;
|
||||
|
||||
import com.sun.jbi.internationalization.Messages;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.apache.catalina.Context;
|
||||
import org.apache.coyote.tomcat5.CoyoteResponse;
|
||||
import org.apache.coyote.tomcat5.CoyoteOutputStream;
|
||||
import org.apache.coyote.tomcat5.CoyoteWriter;
|
||||
import org.apache.coyote.tomcat5.OutputBuffer;
|
||||
|
||||
/**
|
||||
* Customized version of the Tomcat 5 CoyoteResponse
|
||||
*/
|
||||
public class BCCoyoteResponse extends CoyoteResponse {
|
||||
|
||||
//private static Logger logger = LogDomains.getLogger(LogDomains.PWC_LOGGER);
|
||||
private final static Logger logger = Messages.getLogger(BCCoyoteResponse.class);
|
||||
|
||||
|
||||
/*
|
||||
* Constructor.
|
||||
*/
|
||||
public BCCoyoteResponse(boolean chunkingDisabled) {
|
||||
super(chunkingDisabled);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,615 +0,0 @@
|
|||
/*
|
||||
* BEGIN_HEADER - DO NOT EDIT
|
||||
*
|
||||
* The contents of this file are subject to the terms
|
||||
* of the Common Development and Distribution License
|
||||
* (the "License"). You may not use this file except
|
||||
* in compliance with the License.
|
||||
*
|
||||
* You can obtain a copy of the license at
|
||||
* https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
* See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*
|
||||
* When distributing Covered Code, include this CDDL
|
||||
* HEADER in each file and include the License file at
|
||||
* https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
* If applicable add the following below this CDDL HEADER,
|
||||
* with the fields enclosed by brackets "[]" replaced with
|
||||
* your own identifying information: Portions Copyright
|
||||
* [year] [name of copyright owner]
|
||||
*/
|
||||
|
||||
/*
|
||||
* @(#)GrizzlyRequestProcessor.java
|
||||
*
|
||||
* Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* END_HEADER - DO NOT EDIT
|
||||
*/
|
||||
|
||||
package com.sun.jbi.httpsoapbc.embedded;
|
||||
|
||||
import com.sun.jbi.httpsoapbc.HttpSoapComponentContext;
|
||||
import com.sun.jbi.httpsoapbc.MessageExchangeSupport;
|
||||
import com.sun.jbi.httpsoapbc.ReplyListener;
|
||||
import com.sun.jbi.httpsoapbc.servletsupport.HttpServletDenormalizer;
|
||||
import com.sun.jbi.httpsoapbc.servletsupport.HttpServletNormalizer;
|
||||
import com.sun.jbi.internationalization.Messages;
|
||||
import com.sun.jbi.httpsoapbc.Normalizer;
|
||||
import com.sun.jbi.httpsoapbc.Denormalizer;
|
||||
import com.sun.jbi.httpsoapbc.ReplyListener;
|
||||
import com.sun.jbi.httpsoapbc.HttpSoapBindingLifeCycle;
|
||||
import com.sun.jbi.httpsoapbc.InboundMessageProcessor;
|
||||
import com.sun.jbi.httpsoapbc.Endpoint;
|
||||
import com.sun.jbi.httpsoapbc.FaultException;
|
||||
import com.sun.jbi.httpsoapbc.OperationMetaData;
|
||||
import com.sun.jbi.httpsoapbc.util.DebugLog;
|
||||
import com.sun.jbi.nms.exchange.ExchangePattern;
|
||||
import com.sun.enterprise.web.connector.grizzly.AsyncTask;
|
||||
import com.sun.enterprise.web.connector.grizzly.ByteBufferStream;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.net.URI;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.logging.Level;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
import javax.jbi.messaging.MessageExchange;
|
||||
import javax.jbi.messaging.ExchangeStatus;
|
||||
import javax.jbi.messaging.InOut;
|
||||
import javax.jbi.messaging.Fault;
|
||||
import javax.jbi.messaging.NormalizedMessage;
|
||||
import javax.jbi.messaging.MessagingException;
|
||||
import javax.jbi.component.ComponentLifeCycle;
|
||||
import java.util.Set;
|
||||
|
||||
|
||||
import org.apache.catalina.Connector;
|
||||
import org.apache.coyote.Adapter;
|
||||
import org.apache.coyote.Request;
|
||||
import org.apache.coyote.Response;
|
||||
import org.apache.coyote.http11.InternalInputBuffer;
|
||||
import org.apache.coyote.http11.InternalOutputBuffer;
|
||||
import org.apache.coyote.tomcat5.CoyoteConnector;
|
||||
import org.apache.coyote.tomcat5.CoyoteRequest;
|
||||
import org.apache.coyote.tomcat5.CoyoteResponse;
|
||||
|
||||
|
||||
/**
|
||||
* Implementation of a coyote adapter to process HTTP requests asynchronously
|
||||
*
|
||||
*/
|
||||
public class GrizzlyRequestProcessor implements Adapter, ReplyListener {
|
||||
|
||||
private static final Messages mMessages =
|
||||
Messages.getMessages(GrizzlyRequestProcessor.class);
|
||||
private final static Logger mLogger =
|
||||
Messages.getLogger(GrizzlyRequestProcessor.class);
|
||||
|
||||
/**
|
||||
* Index into the requests and response notes
|
||||
*/
|
||||
final static int ADAPTER_NOTES = 1;
|
||||
|
||||
/**
|
||||
* The CoyoteConnector with which this processor is associated.
|
||||
*/
|
||||
private CoyoteConnector connector = null;
|
||||
|
||||
/**
|
||||
* A mapping from the JBI message exchange ID to the request context
|
||||
*/
|
||||
Map exchangeIDToContext = new java.util.concurrent.ConcurrentHashMap();
|
||||
|
||||
HttpSoapBindingLifeCycle lifeCycle;
|
||||
|
||||
/**
|
||||
* Creates a new instance
|
||||
* @param connector CoyoteConnector that owns this processor
|
||||
*/
|
||||
public GrizzlyRequestProcessor(CoyoteConnector connector) throws MessagingException {
|
||||
this.connector = connector;
|
||||
initialize();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the request processor
|
||||
*/
|
||||
void initialize() throws MessagingException {
|
||||
lifeCycle = (HttpSoapBindingLifeCycle) HttpSoapComponentContext.getInstance().getAssociatedLifeCycle();
|
||||
}
|
||||
|
||||
/**
|
||||
* Main entry point of the adapter to service a request
|
||||
* @param the incoming http request
|
||||
* @param the http response to prepare
|
||||
*/
|
||||
public void service(Request req, Response res) {
|
||||
|
||||
// Get the task associated with this request. This could be solved as a request note instead.
|
||||
AsyncTask asyncTask = JBIGrizzlyAsyncFilter.removeTaskMapping(req);
|
||||
if (mLogger.isLoggable(Level.FINEST)) {
|
||||
mLogger.log(Level.FINEST, "Got task mapping from request "
|
||||
+ req.toString() + ", asyncProcessorTask " + asyncTask);
|
||||
}
|
||||
int port = connector.getPort();
|
||||
|
||||
if (mLogger.isLoggable(Level.FINE)) {
|
||||
mLogger.log(Level.FINE, "Servicing async request for " + req.requestURI());
|
||||
}
|
||||
|
||||
CoyoteRequest request = (CoyoteRequest) req.getNote(ADAPTER_NOTES);
|
||||
CoyoteResponse response = (CoyoteResponse) res.getNote(ADAPTER_NOTES);
|
||||
|
||||
// TODO: we should be able to re-use the CoyoteRequest/CoyoteResponse instances
|
||||
//if (request == null) {
|
||||
if (mLogger.isLoggable(Level.FINEST)) {
|
||||
mLogger.log(Level.FINEST, "Initializing servicing objects");
|
||||
}
|
||||
// Create objects
|
||||
request = (CoyoteRequest) connector.createRequest();
|
||||
request.setCoyoteRequest(req);
|
||||
response = (CoyoteResponse) connector.createResponse();
|
||||
response.setCoyoteResponse(res);
|
||||
|
||||
// Link objects
|
||||
request.setResponse(response);
|
||||
response.setRequest(request);
|
||||
|
||||
// Set as notes
|
||||
req.setNote(ADAPTER_NOTES, request);
|
||||
res.setNote(ADAPTER_NOTES, response);
|
||||
|
||||
// Set query string encoding
|
||||
req.getParameters().setQueryStringEncoding(connector.getURIEncoding());
|
||||
if (mLogger.isLoggable(Level.FINE)) {
|
||||
mLogger.log(Level.FINE, "Query string encoding: " + connector.getURIEncoding());
|
||||
}
|
||||
//}
|
||||
|
||||
// Prepare the request context
|
||||
Context currentContext = new Context();
|
||||
currentContext.port = port;
|
||||
currentContext.anInputBuffer = (InternalInputBuffer) req.getInputBuffer();
|
||||
currentContext.anOutputBuffer = (InternalOutputBuffer) res.getOutputBuffer();
|
||||
currentContext.req = req;
|
||||
currentContext.res = res;
|
||||
currentContext.coyoteRequest = request;
|
||||
currentContext.coyoteResponse = response;
|
||||
currentContext.connector = connector;
|
||||
currentContext.asyncTask = asyncTask;
|
||||
|
||||
// TODO: beware, request parsing does not always seem intuitive
|
||||
//currentContext.contextPath = req.localName().toString();
|
||||
currentContext.contextPath = "";
|
||||
currentContext.pathInfo = req.requestURI().toString();
|
||||
|
||||
// if the request is looking for the WSDL, don't process the actual message
|
||||
// just let the reply handler load the WSDL and return it.
|
||||
if ("WSDL".equalsIgnoreCase(request.getQueryString())) {
|
||||
processSynchronousReply(currentContext, null, null);
|
||||
} else {
|
||||
try {
|
||||
String exchangeID = processAsynchRequest(currentContext);
|
||||
} catch (Exception ex) {
|
||||
// Trigger an immediate reply if the request processing resulted in an exception
|
||||
if (mLogger.isLoggable(Level.FINE)) {
|
||||
mLogger.log(Level.FINE, "Exception reported in process synchronous request-reply.", ex);
|
||||
}
|
||||
processSynchronousReply(currentContext, null, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Adapter
|
||||
*/
|
||||
public void afterService(Request req, Response res) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process a HttpRequest and send a JBI request.
|
||||
* @param request embedded server request
|
||||
* @return JBI message exchange ID
|
||||
*/
|
||||
public String processAsynchRequest(Context reqContext) throws FaultException, HttpException {
|
||||
|
||||
String exchangeID = null;
|
||||
CoyoteRequest request = reqContext.coyoteRequest;
|
||||
String context = reqContext.contextPath + reqContext.pathInfo;
|
||||
int port = reqContext.port;
|
||||
|
||||
Endpoint targetEndpoint = lifeCycle.getEndpointBeanForContext(context, port);
|
||||
|
||||
if (targetEndpoint == null) {
|
||||
if (mLogger.isLoggable(Level.WARNING)) {
|
||||
mLogger.log(Level.WARNING,
|
||||
"HTTPBC-W00652.Web_service_mapping_failed",
|
||||
new Object[] { context, new Integer(port)});
|
||||
}
|
||||
|
||||
// Send an HTTP 404 error
|
||||
throw new HttpException(CoyoteResponse.SC_NOT_FOUND,
|
||||
mMessages.getString("HTTPBC-W00652.Web_service_mapping_failed",
|
||||
new Object[] {context, new Integer(port)}));
|
||||
} else {
|
||||
if (mLogger.isLoggable(Level.FINE)) {
|
||||
mLogger.log(Level.FINE, "Web service mapping found for the requested URL. " + context + " at port " + port);
|
||||
}
|
||||
|
||||
try {
|
||||
InboundMessageProcessor anInboundProcessor = getProcessorSupport().inboundProcessor;
|
||||
anInboundProcessor.setInput(request);
|
||||
anInboundProcessor.setTargetEndpoint(targetEndpoint);
|
||||
exchangeID = anInboundProcessor.execute(reqContext);
|
||||
} catch (MessagingException ex) {
|
||||
if (mLogger.isLoggable(Level.WARNING)) {
|
||||
mLogger.log(Level.WARNING, "HTTPBC-W00653.Exception_during_request_processing", ex);
|
||||
}
|
||||
throw new FaultException(ex);
|
||||
}
|
||||
}
|
||||
return exchangeID;
|
||||
}
|
||||
|
||||
/**
|
||||
* The inbound message processor will call us back in execute() once it knows the message exchange for the request.
|
||||
* @see ReplyListener
|
||||
*/
|
||||
public void setMessageExchangeId(String messageExchangeId, Object clientContext) {
|
||||
if (mLogger.isLoggable(Level.FINEST)) {
|
||||
mLogger.log(Level.FINEST, "setMessageExchangeId: " + messageExchangeId + ", clientContext: " + clientContext);
|
||||
}
|
||||
exchangeIDToContext.put(messageExchangeId, clientContext);
|
||||
}
|
||||
|
||||
|
||||
public void setMessageContextForCallback(Object obj1, Object obj2) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a message exchange ID and its associated call back context
|
||||
* @see ReplyListener
|
||||
*/
|
||||
public void removeMessageExchangeId(String messageExchangeId) {
|
||||
exchangeIDToContext.remove(messageExchangeId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the reply available from JBI.
|
||||
*/
|
||||
public void onReply(MessageExchange exchange) throws MessagingException {
|
||||
|
||||
// MEP is complete, we do not expect any further replies. Remove from MessageExchangeSupport.
|
||||
MessageExchangeSupport.removeReplyListener(exchange.getExchangeId());
|
||||
|
||||
if (mLogger.isLoggable(Level.FINE)) {
|
||||
mLogger.log(Level.FINE, "Got reply message exchange " + exchange.getExchangeId());
|
||||
}
|
||||
Context context = (Context) exchangeIDToContext.remove(exchange.getExchangeId());
|
||||
if (mLogger.isLoggable(Level.FINEST)) {
|
||||
StringBuffer idsStr = new StringBuffer();
|
||||
Set s = exchangeIDToContext.keySet();
|
||||
if (s.size() == 0) {
|
||||
idsStr.append("none");
|
||||
} else {
|
||||
for (Object key : s) {
|
||||
idsStr.append(key.toString()).append(" ");
|
||||
}
|
||||
}
|
||||
mLogger.log(Level.FINEST, "Outstanding exchanges: " + idsStr.toString());
|
||||
}
|
||||
|
||||
try {
|
||||
processAsynchReply(context, exchange, null);
|
||||
} catch (RuntimeException ex) {
|
||||
throw new MessagingException(mMessages.getString("HTTPBC-E00654.Exception_during_reply_processing"),
|
||||
ex);
|
||||
} finally {
|
||||
if (mLogger.isLoggable(Level.FINEST)) {
|
||||
mLogger.log(Level.FINEST, "Finishing response");
|
||||
}
|
||||
JBIGrizzlyAsyncFilter.finishResponse(context.asyncTask);
|
||||
|
||||
/* This clean-up help may affect coyote/grizzly. Disable for now.
|
||||
// As currently we can not re-use these, help in cleaning up request and response
|
||||
if (context != null && context.coyoteRequest != null ) {
|
||||
if (context.req != null) {
|
||||
context.req.setNote(ADAPTER_NOTES, null);
|
||||
context.req.recycle();
|
||||
context.req = null;
|
||||
}
|
||||
if (context.res != null) {
|
||||
context.res.setNote(ADAPTER_NOTES, null);
|
||||
context.res.recycle();
|
||||
context.res = null;
|
||||
}
|
||||
// remove linking
|
||||
if (context.coyoteRequest != null) {
|
||||
context.coyoteRequest.setResponse(null);
|
||||
context.coyoteRequest.setCoyoteRequest(null);
|
||||
context.coyoteRequest.recycle();
|
||||
context.coyoteRequest = null;
|
||||
}
|
||||
if (context.coyoteResponse != null) {
|
||||
context.coyoteResponse.setRequest(null);
|
||||
context.coyoteResponse.setCoyoteResponse(null);
|
||||
context.coyoteResponse.recycle();
|
||||
context.coyoteResponse = null;
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reply synchronously in this service() invocation.
|
||||
* This is useful for responding with errors and any other exchanges where no
|
||||
* asynchronous exchange with the JBI NMR will occur.
|
||||
*/
|
||||
public void processSynchronousReply(Context reqContext, MessageExchange exchange, Exception requestFailedException) {
|
||||
processAsynchReply(reqContext, exchange, requestFailedException);
|
||||
JBIGrizzlyAsyncFilter.finishResponseSynchronously(reqContext.asyncTask);
|
||||
}
|
||||
|
||||
/**
|
||||
* Process a JBI reply and prepare an HttpResponse
|
||||
* @param reqContext the original request context
|
||||
* @param exchange the JBI message exchange which has a reply available. Maybe null if requestFailedException is not null.
|
||||
* @param requestFailedException The exception that occurred in the processAsynchRequest phase.
|
||||
*/
|
||||
public void processAsynchReply(Context reqContext, MessageExchange exchange, Exception requestFailedException) {
|
||||
|
||||
CoyoteResponse response = reqContext.coyoteResponse;
|
||||
try {
|
||||
CoyoteRequest request = reqContext.coyoteRequest;
|
||||
String context = reqContext.contextPath + reqContext.pathInfo;
|
||||
|
||||
if (mLogger.isLoggable(Level.FINEST)) {
|
||||
mLogger.log(Level.FINEST, "Lifecycle: "
|
||||
+ lifeCycle + ", context path: " + context
|
||||
+ ", request context: " + reqContext);
|
||||
}
|
||||
Endpoint targetEndpoint = lifeCycle.getEndpointBeanForContext(context, reqContext.port);
|
||||
OperationMetaData operationMetaData = null;
|
||||
|
||||
// SOAP 1.1 we'll set it as text/xml
|
||||
// TODO: for SOAP 1.2, content type will have to be application/soap+xml
|
||||
response.setContentType("text/xml");
|
||||
|
||||
if (mLogger.isLoggable(Level.FINEST)) {
|
||||
mLogger.log(Level.FINEST, "Request query string: " + request.getQueryString());
|
||||
}
|
||||
|
||||
// if user is looking for the wsdl file, read it from disk and return it synchronously
|
||||
if (targetEndpoint != null && "WSDL".equalsIgnoreCase(request.getQueryString())) {
|
||||
try {
|
||||
ByteBuffer mbb = targetEndpoint.getServiceDescriptorAsByteBuffer();
|
||||
java.io.OutputStream os = response.getOutputStream();
|
||||
java.nio.channels.WritableByteChannel channel = java.nio.channels.Channels.newChannel(os);
|
||||
channel.write(mbb);
|
||||
os.flush();
|
||||
response.setStatus(CoyoteResponse.SC_OK);
|
||||
} catch (Exception e) {
|
||||
if (mLogger.isLoggable(Level.WARNING)) {
|
||||
mLogger.log(Level.WARNING, "HTTPBC-W00651.WSDL_retrieval_exception", e);
|
||||
}
|
||||
// Reply with http error
|
||||
response.setStatus(CoyoteResponse.SC_INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
String pat = null;
|
||||
String operation = null;
|
||||
if (exchange != null) {
|
||||
URI pattern = exchange.getPattern();
|
||||
if (mLogger.isLoggable(Level.FINEST)) {
|
||||
mLogger.log(Level.FINEST, "Pattern for exchange id "
|
||||
+ exchange.getExchangeId() + " is " + pattern);
|
||||
}
|
||||
pat = pattern.toString().trim();
|
||||
operation = exchange.getOperation().getLocalPart();
|
||||
} else {
|
||||
// If the exchange is null make sure there is an exception reported.
|
||||
if (requestFailedException == null) {
|
||||
requestFailedException = new MessagingException("Null message exchange");
|
||||
}
|
||||
}
|
||||
|
||||
// Get the operation meta data if available
|
||||
if (targetEndpoint != null) {
|
||||
Map nameToMeta = targetEndpoint.getOperationNameToMetaData();
|
||||
operationMetaData = (OperationMetaData) nameToMeta.get(operation);
|
||||
}
|
||||
|
||||
if (targetEndpoint == null || exchange == null || ExchangePattern.isInOut(exchange)) {
|
||||
try {
|
||||
if (requestFailedException != null) {
|
||||
// Process a failure in processing the request
|
||||
if (requestFailedException instanceof HttpException) {
|
||||
|
||||
// Temporary Support for retrieving resources for WSDLs retrieved via ?WSDL that have relative imports
|
||||
// If an address context is not unique (e.g. multiple endpoints are deployed under /service that import resources with the same name),
|
||||
// this will simply return the first match it can find.
|
||||
ByteBuffer resource = lifeCycle.queryResource(context, targetEndpoint);
|
||||
if (resource != null) {
|
||||
if (mLogger.isLoggable(Level.FINE)) {
|
||||
mLogger.log(Level.FINE, "Request context "
|
||||
+ context + " at port " + reqContext.port
|
||||
+ " mapped to resource " + resource);
|
||||
}
|
||||
ByteBuffer mbb = resource;
|
||||
java.io.OutputStream os = response.getOutputStream();
|
||||
java.nio.channels.WritableByteChannel channel = java.nio.channels.Channels.newChannel(os);
|
||||
channel.write(mbb);
|
||||
os.flush();
|
||||
response.setStatus(CoyoteResponse.SC_OK);
|
||||
} else {
|
||||
response.setStatus(((HttpException) requestFailedException).getErrorCode());
|
||||
}
|
||||
|
||||
} else {
|
||||
Denormalizer aDenormalizer = getProcessorSupport().denormalizer;
|
||||
response = (CoyoteResponse) aDenormalizer.denormalizeException(requestFailedException, response);
|
||||
int statusCode = CoyoteResponse.SC_INTERNAL_SERVER_ERROR;
|
||||
response.setStatus(statusCode);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if (operationMetaData == null) {
|
||||
throw new MessagingException(mMessages.getString("HTTPBC-E00667.No_opmeta_for_operation", operation));
|
||||
}
|
||||
|
||||
if (exchange.getError() != null) {
|
||||
Denormalizer aDenormalizer = getProcessorSupport().denormalizer;
|
||||
response = (CoyoteResponse) aDenormalizer.denormalizeError(exchange, response);
|
||||
} else {
|
||||
NormalizedMessage outMsg = null;
|
||||
|
||||
if (exchange.getFault() != null) {
|
||||
// TODO: check that a message exchange fault can be used
|
||||
// the same way as an output message!
|
||||
Fault aFault = exchange.getFault();
|
||||
outMsg = aFault;
|
||||
} else {
|
||||
if (exchange instanceof InOut) {
|
||||
InOut inout = (InOut) exchange;
|
||||
outMsg = inout.getOutMessage();
|
||||
}
|
||||
}
|
||||
|
||||
if (mLogger.isLoggable(Level.FINE)) {
|
||||
if (outMsg != null) {
|
||||
DebugLog.debugLog(mLogger, Level.FINE, "Denormalizing received msg", outMsg.getContent());
|
||||
} else {
|
||||
mLogger.log(Level.FINE, "Message received is empty");
|
||||
}
|
||||
}
|
||||
Denormalizer aDenormalizer = getProcessorSupport().denormalizer;
|
||||
response = (CoyoteResponse) aDenormalizer.denormalize(outMsg, exchange, response, operationMetaData);
|
||||
}
|
||||
}
|
||||
} catch (Throwable ex) {
|
||||
if (mLogger.isLoggable(Level.WARNING)) {
|
||||
mLogger.log(Level.WARNING, "HTTPBC-W00654.Exception_during_reply_processing",ex);
|
||||
}
|
||||
// Reply with fault.
|
||||
Denormalizer aDenormalizer = getProcessorSupport().denormalizer;
|
||||
response = (CoyoteResponse) aDenormalizer.denormalizeException(ex, response);
|
||||
}
|
||||
} else if (ExchangePattern.isInOnly(exchange)) {
|
||||
int statusCode = CoyoteResponse.SC_ACCEPTED; // one-way should send accepted 202 - not OK 200
|
||||
if (requestFailedException != null) {
|
||||
if (requestFailedException instanceof HttpException) {
|
||||
statusCode = ((HttpException) requestFailedException).getErrorCode();
|
||||
} else {
|
||||
mLogger.log(Level.SEVERE, "HTTPBC-E00653.Exception_during_request_processing",
|
||||
requestFailedException);
|
||||
statusCode = CoyoteResponse.SC_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
} else {
|
||||
// If the SE does not report a successful 'transmission' (for in-only exchange status DONE)
|
||||
// respond with an http error
|
||||
if (exchange.getStatus().equals(ExchangeStatus.ERROR)) {
|
||||
mLogger.log(Level.SEVERE, "HTTPBC-E00653.Exception_during_request_processing");
|
||||
statusCode = CoyoteResponse.SC_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
}
|
||||
response.setStatus(statusCode);
|
||||
} else {
|
||||
mLogger.log(Level.SEVERE,"HTTPBC-E00668.Unsupported_message_type", pat);
|
||||
int statusCode = CoyoteResponse.SC_INTERNAL_SERVER_ERROR;
|
||||
response.setStatus(statusCode);
|
||||
}
|
||||
} catch (Throwable ex) {
|
||||
// Make sure that no exceptions get propagated to the embedded server, this might terminate the server
|
||||
mLogger.log(Level.SEVERE, "HTTPBC-E00654.Exception_during_reply_processing", ex);
|
||||
int statusCode = CoyoteResponse.SC_INTERNAL_SERVER_ERROR;
|
||||
response.setStatus(statusCode);
|
||||
} finally {
|
||||
try {
|
||||
response.finishResponse();
|
||||
} catch (IOException ex) {
|
||||
mLogger.log(Level.SEVERE, "HTTPBC-E00654.Exception_during_reply_processing", ex);
|
||||
}
|
||||
|
||||
if (mLogger.isLoggable(Level.FINEST)) {
|
||||
mLogger.log(Level.FINEST, "Wrote response");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// START SJSAS 6349248
|
||||
/**
|
||||
* Not supported by this adapter implementation.
|
||||
*
|
||||
* Notify all container event listeners that a particular event has
|
||||
* occurred for this Adapter. The default implementation performs
|
||||
* this notification synchronously using the calling thread.
|
||||
*
|
||||
* @param type Event type
|
||||
* @param data Event data
|
||||
*/
|
||||
public void fireAdapterEvent(String type, Object data) {
|
||||
mLogger.log(Level.FINE, "Not supported by this implementation");
|
||||
}
|
||||
// END SJSAS 6349248
|
||||
|
||||
/**
|
||||
* Get the thread specific processor support
|
||||
* Beware: Do not use the processor support instances in a different thread than
|
||||
* the one calling getProcessorSupport.
|
||||
*/
|
||||
ProcessorSupport getProcessorSupport() throws MessagingException {
|
||||
// Get the processor support instances associated with the thread if present, create if not.
|
||||
ProcessorSupport currentProcSupport = (ProcessorSupport) processorSupport.get();
|
||||
if (currentProcSupport == null) {
|
||||
currentProcSupport = new ProcessorSupport();
|
||||
currentProcSupport.normalizer = new HttpServletNormalizer();
|
||||
currentProcSupport.denormalizer = new HttpServletDenormalizer();
|
||||
currentProcSupport.inboundProcessor = new InboundMessageProcessor(currentProcSupport.normalizer, this);
|
||||
processorSupport.set(currentProcSupport);
|
||||
}
|
||||
return currentProcSupport;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds instances that are not thread safe
|
||||
*/
|
||||
private static ThreadLocal processorSupport = new ThreadLocal();
|
||||
|
||||
/**
|
||||
* Holds instances that are not thread safe
|
||||
*/
|
||||
static class ProcessorSupport {
|
||||
Normalizer normalizer;
|
||||
Denormalizer denormalizer;
|
||||
InboundMessageProcessor inboundProcessor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds request context information
|
||||
*/
|
||||
static class Context {
|
||||
int port;
|
||||
InternalInputBuffer anInputBuffer;
|
||||
InternalOutputBuffer anOutputBuffer;
|
||||
Request req;
|
||||
Response res;
|
||||
CoyoteRequest coyoteRequest;
|
||||
CoyoteResponse coyoteResponse;
|
||||
Connector connector;
|
||||
String contextPath;
|
||||
String pathInfo;
|
||||
AsyncTask asyncTask;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,169 +0,0 @@
|
|||
/*
|
||||
* BEGIN_HEADER - DO NOT EDIT
|
||||
*
|
||||
* The contents of this file are subject to the terms
|
||||
* of the Common Development and Distribution License
|
||||
* (the "License"). You may not use this file except
|
||||
* in compliance with the License.
|
||||
*
|
||||
* You can obtain a copy of the license at
|
||||
* https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
* See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*
|
||||
* When distributing Covered Code, include this CDDL
|
||||
* HEADER in each file and include the License file at
|
||||
* https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
* If applicable add the following below this CDDL HEADER,
|
||||
* with the fields enclosed by brackets "[]" replaced with
|
||||
* your own identifying information: Portions Copyright
|
||||
* [year] [name of copyright owner]
|
||||
*/
|
||||
|
||||
/*
|
||||
* @(#)JBIGrizzlyAsyncFilter.java
|
||||
*
|
||||
* Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* END_HEADER - DO NOT EDIT
|
||||
*/
|
||||
|
||||
package com.sun.jbi.httpsoapbc.embedded;
|
||||
|
||||
|
||||
import com.sun.enterprise.web.connector.grizzly.AsyncExecutor;
|
||||
import com.sun.enterprise.web.connector.grizzly.AsyncFilter;
|
||||
import com.sun.enterprise.web.connector.grizzly.AsyncHandler;
|
||||
import com.sun.enterprise.web.connector.grizzly.AsyncTask;
|
||||
import com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask;
|
||||
import com.sun.enterprise.web.connector.grizzly.ProcessorTask;
|
||||
import com.sun.jbi.internationalization.Messages;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
import java.util.logging.Level;
|
||||
import java.util.Map;
|
||||
import java.util.Queue;
|
||||
|
||||
import org.apache.coyote.Request;
|
||||
import org.apache.coyote.tomcat5.CoyoteResponse;
|
||||
|
||||
|
||||
/**
|
||||
* Grizzly filter to asynchronously invoke JBI HTTP BC
|
||||
*
|
||||
* Also has support to mark an exchange as synchronous when needed, e.g. for
|
||||
* reporting errors
|
||||
*
|
||||
*/
|
||||
public class JBIGrizzlyAsyncFilter implements AsyncFilter {
|
||||
|
||||
private final static Logger logger =
|
||||
Messages.getLogger(JBIGrizzlyAsyncFilter.class);
|
||||
|
||||
/**
|
||||
* Mapping from the request to the processing task, used by the adapter
|
||||
* to retrieve the task associated with a request.
|
||||
*/
|
||||
private static Map requestToTask = new java.util.concurrent.ConcurrentHashMap();
|
||||
|
||||
/**
|
||||
* List of task instances that should be handled in a synchronous manner.
|
||||
* By the adapter adding tasks to this queue it can control whether
|
||||
* a given request is dealt with in a synchronous or asynchronous fashion.
|
||||
*/
|
||||
private static Queue respondSynchronously = new java.util.concurrent.ConcurrentLinkedQueue();
|
||||
|
||||
/**
|
||||
* Filter implementation, invoke the BC adapter implementation.
|
||||
*/
|
||||
public boolean doFilter(AsyncExecutor asyncExecutor) {
|
||||
|
||||
boolean continueSynchronously = false;
|
||||
|
||||
AsyncTask asyncProcessorTask = asyncExecutor.getAsyncTask();
|
||||
// In Grizzly v1, the asynchronous extenstions are tied to the DefaultProcessorTask
|
||||
DefaultProcessorTask defaultProcTask = (DefaultProcessorTask) asyncProcessorTask.getProcessorTask();
|
||||
Request req = defaultProcTask.getRequest();
|
||||
|
||||
if (logger.isLoggable(Level.FINEST)) {
|
||||
logger.log(Level.FINEST, "doFilter on request " + req.toString() + ", asyncProcessorTask " + asyncProcessorTask.toString());
|
||||
}
|
||||
|
||||
requestToTask.put(req, asyncProcessorTask);
|
||||
|
||||
try {
|
||||
asyncProcessorTask.getProcessorTask().invokeAdapter();
|
||||
boolean wasPresent = respondSynchronously.remove(asyncProcessorTask);
|
||||
continueSynchronously = wasPresent;
|
||||
} catch (RuntimeException ex) {
|
||||
logger.log(Level.WARNING, "HTTPBC-W00641.Adapter_invoke_exception", ex);
|
||||
// make sure this is removed; just in case.
|
||||
respondSynchronously.remove(asyncProcessorTask);
|
||||
continueSynchronously = true;
|
||||
} finally {
|
||||
// make sure this mapping is cleaned up; just in case
|
||||
requestToTask.remove(req);
|
||||
}
|
||||
|
||||
if (logger.isLoggable(Level.FINEST)) {
|
||||
logger.log(Level.FINEST, "Continue synchronously flag set to " + continueSynchronously);
|
||||
}
|
||||
|
||||
return continueSynchronously;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark request as responding synchronously, from the same thread as the request thread.
|
||||
*/
|
||||
public static void finishResponseSynchronously(AsyncTask asyncProcessorTask) {
|
||||
|
||||
if (asyncProcessorTask != null) {
|
||||
DefaultProcessorTask task = (DefaultProcessorTask) asyncProcessorTask.getProcessorTask();
|
||||
AsyncHandler asyncHandler = task.getAsyncHandler();
|
||||
asyncHandler.removeFromInterruptedQueue(asyncProcessorTask);
|
||||
|
||||
// Mark task as synchronous
|
||||
respondSynchronously.add(asyncProcessorTask);
|
||||
if (logger.isLoggable(Level.FINEST)) {
|
||||
logger.log(Level.FINEST, "Marking exchange as synchronous");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Finish the response asynchronously, i.e. from a different thread than the request thread.
|
||||
*/
|
||||
public static void finishResponse(AsyncTask asyncProcessorTask) {
|
||||
if (asyncProcessorTask != null) {
|
||||
// In Grizzly v1, the asynchronous extenstions are tied to the DefaultProcessorTask
|
||||
DefaultProcessorTask task = (DefaultProcessorTask) asyncProcessorTask.getProcessorTask();
|
||||
|
||||
if (task != null) {
|
||||
AsyncHandler asyncHandler = task.getAsyncHandler();
|
||||
if (asyncHandler != null) {
|
||||
if (logger.isLoggable(Level.FINEST)) {
|
||||
logger.log(Level.FINEST, "Finish response for asyncProcessorTask "
|
||||
+ asyncProcessorTask.toString());
|
||||
}
|
||||
asyncHandler.handle(asyncProcessorTask);
|
||||
} else {
|
||||
logger.log(Level.SEVERE, "HTTPBC-E00642.No_response_handler_for_request");
|
||||
}
|
||||
} else {
|
||||
logger.log(Level.WARNING, "HTTPBC-W00642.No_correlating_request_for_response");
|
||||
}
|
||||
} else {
|
||||
logger.log(Level.WARNING, "HTTPBC-W00643.Null_response");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the task mapping for a given request
|
||||
* @param request the request
|
||||
* @return the task if there was a mapping for the request, null if not
|
||||
*/
|
||||
public static AsyncTask removeTaskMapping(Request request) {
|
||||
return (AsyncTask) requestToTask.remove(request);
|
||||
}
|
||||
}
|
|
@ -1,443 +0,0 @@
|
|||
/*
|
||||
* BEGIN_HEADER - DO NOT EDIT
|
||||
*
|
||||
* The contents of this file are subject to the terms
|
||||
* of the Common Development and Distribution License
|
||||
* (the "License"). You may not use this file except
|
||||
* in compliance with the License.
|
||||
*
|
||||
* You can obtain a copy of the license at
|
||||
* https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
* See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*
|
||||
* When distributing Covered Code, include this CDDL
|
||||
* HEADER in each file and include the License file at
|
||||
* https://open-jbi-components.dev.java.net/public/CDDLv1.0.html.
|
||||
* If applicable add the following below this CDDL HEADER,
|
||||
* with the fields enclosed by brackets "[]" replaced with
|
||||
* your own identifying information: Portions Copyright
|
||||
* [year] [name of copyright owner]
|
||||
*/
|
||||
|
||||
/*
|
||||
* @(#)LinkedListThrottlePipeline.java
|
||||
*
|
||||
* Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* END_HEADER - DO NOT EDIT
|
||||
*/
|
||||
|
||||
package com.sun.jbi.httpsoapbc.embedded;
|
||||
|
||||
import java.nio.channels.SelectionKey;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.BufferUnderflowException;
|
||||
import java.nio.channels.SocketChannel;
|
||||
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
import java.util.logging.Level;
|
||||
import java.util.Iterator;
|
||||
|
||||
import com.sun.enterprise.web.connector.grizzly.LinkedListPipeline;
|
||||
import com.sun.enterprise.web.connector.grizzly.SelectorThread;
|
||||
import com.sun.enterprise.web.connector.grizzly.Task;
|
||||
import com.sun.enterprise.web.connector.grizzly.ReadTask;
|
||||
import com.sun.enterprise.web.connector.grizzly.HtmlHelper;
|
||||
import com.sun.enterprise.web.connector.grizzly.AsyncReadTask;
|
||||
import com.sun.enterprise.web.connector.grizzly.WorkerThread;
|
||||
|
||||
import com.sun.jbi.internationalization.Messages;
|
||||
|
||||
import com.sun.jbi.httpsoapbc.HttpSoapBindingLifeCycle;
|
||||
import com.sun.jbi.httpsoapbc.Endpoint;
|
||||
import com.sun.jbi.httpsoapbc.RequestThrottlingController;
|
||||
|
||||
/**
|
||||
*
|
||||
* Throttle pipeline for throttling requests
|
||||
*/
|
||||
public class LinkedListThrottlePipeline extends LinkedListPipeline implements RequestThrottlingController {
|
||||
private static final Messages mMessages =
|
||||
Messages.getMessages(LinkedListThrottlePipeline.class);
|
||||
private static final Logger mLogger =
|
||||
Messages.getLogger(LinkedListThrottlePipeline.class);
|
||||
|
||||
private SelectorThread st;
|
||||
|
||||
private final static String QUERY_STRING="?";
|
||||
private final static String PATH_STRING="/";
|
||||
|
||||
private HttpSoapBindingLifeCycle lifeCycle;
|
||||
|
||||
private ExecutorService resumeThreadPool;
|
||||
|
||||
protected ConcurrentHashMap<String, ConcurrentLinkedQueue<SelectionKeyByteBuffer>> suspendedKeys =
|
||||
new ConcurrentHashMap<String, ConcurrentLinkedQueue<SelectionKeyByteBuffer>>();
|
||||
|
||||
protected ConcurrentLinkedQueue<ByteBuffer> bbPool =
|
||||
new ConcurrentLinkedQueue<ByteBuffer>();
|
||||
|
||||
class SelectionKeyByteBuffer {
|
||||
private SelectionKey sk;
|
||||
private ByteBuffer bb;
|
||||
|
||||
SelectionKeyByteBuffer (SelectionKey sk, ByteBuffer bb) {
|
||||
this.sk = sk;
|
||||
this.bb = bb;
|
||||
}
|
||||
|
||||
SelectionKey getSelectionKey() { return sk; }
|
||||
ByteBuffer getByteBuffer() {return bb; }
|
||||
}
|
||||
|
||||
class ResumerTask implements Runnable {
|
||||
LinkedListThrottlePipeline pipeline;
|
||||
Endpoint endpoint;
|
||||
ResumerTask (LinkedListThrottlePipeline pipeline, Endpoint endpoint) {
|
||||
this.pipeline = pipeline;
|
||||
this.endpoint = endpoint;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
synchronized (pipeline) {
|
||||
String uri = endpoint.getUrlContext();
|
||||
int port = endpoint.getUrlPort();
|
||||
int resumeCount = endpoint.getMaxConcurrencyLimit() - endpoint.getPendingExchangeReplies();
|
||||
String key = uri+":"+port;
|
||||
ConcurrentLinkedQueue<SelectionKeyByteBuffer> linkQ = pipeline.suspendedKeys.get(key);
|
||||
if (mLogger.isLoggable(Level.FINER)) {
|
||||
mLogger.log(Level.FINER, "Resume SelectionKey(s) triggered; URI '"+uri+
|
||||
"', port '"+port+
|
||||
"'; resumeCount= "+resumeCount+
|
||||
", suspended size="+linkQ.size());
|
||||
}
|
||||
if (linkQ != null && linkQ.size() > 0) {
|
||||
for (int i=0; i < resumeCount; i++){
|
||||
// only resume if there are still suspended ones..
|
||||
if (linkQ.size()>0) {
|
||||
SelectionKeyByteBuffer skbb = linkQ.poll();
|
||||
try {
|
||||
SelectionKey sk = skbb.getSelectionKey();
|
||||
ByteBuffer bb = skbb.getByteBuffer();
|
||||
if (mLogger.isLoggable(Level.FINER)) {
|
||||
mLogger.log(Level.FINER, "Request URI '" + uri + "', port '" + port + "'; got cached Selectionkey [" + sk + "] and cached ByteBuffer [" + bb + "]");
|
||||
}
|
||||
AsyncReadTask task = (AsyncReadTask)st.getReadTask(sk);
|
||||
task.getByteBuffer().put(bb);
|
||||
task.setBytesAvailable(true);
|
||||
endpoint.incrementPendingExchangeReplies();
|
||||
pipeline.internalAddTask(task);
|
||||
if (mLogger.isLoggable(Level.FINER)) {
|
||||
mLogger.log(Level.FINER, "Request URI '" + uri + "', port '" + port + "'; RESUMED Selectionkey [" + task.getSelectionKey() + "], ByteBuffer [" + task.getByteBuffer() + "] on Task [" + task + "]");
|
||||
}
|
||||
returnReadByteBuffer(bb);
|
||||
} catch (Throwable t) {
|
||||
String error = mMessages.getString("HTTPBC-E00670.Exception_during_resume_suspended_selectionkey",
|
||||
new Object [] {uri, new Integer(port), skbb.getSelectionKey(), t.getLocalizedMessage()});
|
||||
mLogger.log(Level.WARNING, error, t);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (linkQ.size() == 0) {
|
||||
pipeline.suspendedKeys.remove(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public LinkedListThrottlePipeline () {
|
||||
super();
|
||||
}
|
||||
|
||||
public synchronized void addTask(Task task) {
|
||||
if (mLogger.isLoggable(Level.FINER)) {
|
||||
mLogger.log (Level.FINER, "addTask called with Task [" + task + "]");
|
||||
}
|
||||
|
||||
if (task.getType() == Task.READ_TASK) {
|
||||
|
||||
String requestURI = null;
|
||||
boolean isWsdlQuery = false;
|
||||
ByteBuffer bb = getReadByteBuffer();
|
||||
|
||||
try {
|
||||
PeekBuffer pb = peekRequestURI((ReadTask)task, bb);
|
||||
requestURI = pb.getToken();
|
||||
isWsdlQuery = pb.getIsWsdlQuery();
|
||||
} catch (Throwable t) {
|
||||
AsyncReadTask asyncRT = (AsyncReadTask)task;
|
||||
asyncRT.terminate(false);
|
||||
returnReadByteBuffer(bb);
|
||||
if (mLogger.isLoggable(Level.FINER)) {
|
||||
mLogger.log (Level.FINER, "Client has closed the socket...");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (requestURI != null) {
|
||||
if (mLogger.isLoggable(Level.FINER)) {
|
||||
mLogger.log (Level.FINER, "Request URI is '" + requestURI + "'");
|
||||
}
|
||||
int port = task.getSelectorThread().getPort();
|
||||
Endpoint endpoint = this.lifeCycle.getEndpointBeanForContext(requestURI, port);
|
||||
|
||||
// Only associate throttler controler to endpoint if endpoint is configured for throttling
|
||||
if (endpoint != null && endpoint.getMaxConcurrencyLimit() > 0) {
|
||||
int maxConcurrencyLimit = endpoint.getMaxConcurrencyLimit();
|
||||
// associate this controller with endpoint first
|
||||
endpoint.setInboundRequestThrottlingController(this);
|
||||
|
||||
int pendingExchangeReplies = endpoint.getPendingExchangeReplies();
|
||||
if (mLogger.isLoggable(Level.FINER)) {
|
||||
mLogger.log(Level.FINER, "Found Endpoint for request URI '" + requestURI + "' and port '" + port + "'; maxConcurrencyLimit="+maxConcurrencyLimit+", pendingExchangeReplies="+pendingExchangeReplies);
|
||||
}
|
||||
|
||||
String key = requestURI+":"+port;
|
||||
// suspend selection key if maxed out concurrent messages
|
||||
if (maxConcurrencyLimit != -1 && (pendingExchangeReplies >= maxConcurrencyLimit) && !isWsdlQuery) {
|
||||
// Disable keep-alive
|
||||
task.getSelectionKey().attach(null);
|
||||
st = task.getSelectorThread();
|
||||
if (!suspendedKeys.containsKey(key)) {
|
||||
suspendedKeys.put(key, new ConcurrentLinkedQueue<SelectionKeyByteBuffer>());
|
||||
}
|
||||
ConcurrentLinkedQueue<SelectionKeyByteBuffer> linkQ = suspendedKeys.get(key);
|
||||
SelectionKey sk = task.getSelectionKey();
|
||||
SelectionKeyByteBuffer skbb = new SelectionKeyByteBuffer(sk, bb);
|
||||
linkQ.offer(skbb); // add the byte buffer and selection key to our internal cache
|
||||
task.recycle(); // tells Grizzly to reuse the task for the next request
|
||||
st.returnTask(task);
|
||||
if (mLogger.isLoggable(Level.FINER)) {
|
||||
mLogger.log(Level.FINER, "Request URI '" + requestURI + "', port '" + port + "'; SUSPENDED Selectionkey [" + sk + "], ByteBuffer [" + bb + "] from Task [" + task + "]; suspended size="+linkQ.size());
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Proceed with the read task - copying the contents of the "temp" ByteBuffer to
|
||||
// the one in ReadTask.
|
||||
((ReadTask)task).getByteBuffer().put(bb);
|
||||
if (mLogger.isLoggable(Level.FINER)) {
|
||||
mLogger.log(Level.FINER, "ReadTask ByteBuffer [" + ((ReadTask)task).getByteBuffer()+ "]");
|
||||
}
|
||||
((ReadTask)task).setBytesAvailable(true); // tells Grizzly not to start reading from the stream buffer until the temp buffer is read
|
||||
|
||||
if (endpoint != null && !isWsdlQuery) {
|
||||
endpoint.incrementPendingExchangeReplies();
|
||||
}
|
||||
}
|
||||
|
||||
returnReadByteBuffer(bb);
|
||||
}
|
||||
super.addTask(task); // calls the super to resume normal processing of the LinkedListPipeline
|
||||
}
|
||||
|
||||
public void resumeSuspendedRequests(Endpoint endpoint) {
|
||||
if (resumeThreadPool == null) {
|
||||
resumeThreadPool = Executors.newCachedThreadPool();
|
||||
}
|
||||
resumeThreadPool.submit(new ResumerTask(this,endpoint));
|
||||
}
|
||||
|
||||
public synchronized void cleanup() {
|
||||
if (resumeThreadPool != null) {
|
||||
resumeThreadPool.shutdown();
|
||||
if (mLogger.isLoggable(Level.FINER)) {
|
||||
mLogger.log(Level.FINER, "shutdown resume task thread pool");
|
||||
}
|
||||
}
|
||||
|
||||
// Cancel any suspended tasks
|
||||
if (suspendedKeys != null && suspendedKeys.size() > 0) {
|
||||
for (Iterator<String> iter1=suspendedKeys.keySet().iterator(); iter1.hasNext();) {
|
||||
String uriPort = iter1.next();
|
||||
String uri = uriPort.substring(0,uriPort.indexOf(":"));
|
||||
String port = uriPort.substring(uriPort.indexOf(":")+1, uriPort.length());
|
||||
ConcurrentLinkedQueue<SelectionKeyByteBuffer> linkQ = suspendedKeys.remove(uri);
|
||||
if (linkQ != null && linkQ.size() > 0) {
|
||||
for (Iterator iter2=linkQ.iterator();iter2.hasNext();) {
|
||||
SelectionKeyByteBuffer ssbb = linkQ.poll();
|
||||
SelectionKey selkey = ssbb.getSelectionKey();
|
||||
try {
|
||||
Task task = st.getReadTask(selkey);
|
||||
task.cancelTask("No resources available.", HtmlHelper.OK);
|
||||
} catch (Throwable t) {
|
||||
String error = mMessages.getString("HTTPBC-E00671.Exception_during_cancel_suspended_selectionkey",
|
||||
new Object [] {uri, port, selkey, t.getLocalizedMessage()});
|
||||
mLogger.log(Level.WARNING, error, t);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mLogger.isLoggable(Level.FINER)) {
|
||||
mLogger.log(Level.FINER, "cancelled all suspended selection key read tasks for URI '" + uri + "' on port '" + port + "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setHttpSoapBindingLifeCycle (HttpSoapBindingLifeCycle lifeCycle) {
|
||||
this.lifeCycle = lifeCycle;
|
||||
}
|
||||
|
||||
/***
|
||||
* Get the request URI from the <code>ByteBuffer</code>
|
||||
*/
|
||||
protected PeekBuffer peekRequestURI(ReadTask readTask, ByteBuffer byteBuffer) throws Exception {
|
||||
SocketChannel socketChannel =
|
||||
(SocketChannel)readTask.getSelectionKey().channel();
|
||||
String token = null;
|
||||
boolean isWsdlQuery = false;
|
||||
|
||||
if (socketChannel.isOpen()) {
|
||||
socketChannel.read(byteBuffer);
|
||||
int limit = byteBuffer.limit();
|
||||
int position = byteBuffer.position();
|
||||
|
||||
if (parse (byteBuffer)) {
|
||||
byte[] chars = new byte[byteBuffer.limit() - byteBuffer.position()];
|
||||
|
||||
byteBuffer.get(chars);
|
||||
|
||||
token = new String(chars);
|
||||
|
||||
String normalizedToken = token.toLowerCase();
|
||||
if (normalizedToken.indexOf ("?wsdl") != -1) {
|
||||
isWsdlQuery = true;
|
||||
}
|
||||
|
||||
int index = token.indexOf(0x20);
|
||||
if ( index != -1){
|
||||
token = token.substring(0,index);
|
||||
}
|
||||
|
||||
// Remove query string.
|
||||
index = token.indexOf(QUERY_STRING);
|
||||
if ( index != -1){
|
||||
token = token.substring(0,index);
|
||||
}
|
||||
|
||||
boolean slash = token.endsWith(PATH_STRING);
|
||||
if ( slash ){
|
||||
token = token.substring(0,token.length() -1);
|
||||
}
|
||||
}
|
||||
|
||||
byteBuffer.limit(limit);
|
||||
byteBuffer.position(position);
|
||||
byteBuffer.flip();
|
||||
}
|
||||
|
||||
return new PeekBuffer(token, isWsdlQuery);
|
||||
}
|
||||
|
||||
protected ByteBuffer getReadByteBuffer() {
|
||||
int size = 1028; // keep it small
|
||||
ByteBuffer bb = bbPool.poll();
|
||||
if (bb == null) {
|
||||
bb = ByteBuffer.allocate(size);
|
||||
}
|
||||
return bb;
|
||||
}
|
||||
|
||||
protected void returnReadByteBuffer(ByteBuffer bb) {
|
||||
bb.clear();
|
||||
bbPool.offer(bb);
|
||||
}
|
||||
|
||||
protected void internalAddTask (Task task) {
|
||||
super.addTask(task);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the request line in search of the context-root bytes of the HTTP
|
||||
* Method. The <code>ByteBuffer</code> position and limit refer
|
||||
* respectively to the start and the end of the context root.
|
||||
* @param byteBuffer The byteBuffer containing the requests bytes
|
||||
* @return true if the context-root has been found.
|
||||
*/
|
||||
public boolean parse(ByteBuffer byteBuffer) {
|
||||
boolean isFound = false;
|
||||
|
||||
int curPosition = byteBuffer.position();
|
||||
int curLimit = byteBuffer.limit();
|
||||
|
||||
// Rule a - If nothing, return to the Selector.
|
||||
if (byteBuffer.position() == 0)
|
||||
return false;
|
||||
|
||||
byteBuffer.position(0);
|
||||
byteBuffer.limit(curPosition);
|
||||
int state =0;
|
||||
int start =0;
|
||||
int end = 0;
|
||||
|
||||
try {
|
||||
byte c;
|
||||
|
||||
// Rule b - try to determine the context-root
|
||||
while(byteBuffer.hasRemaining()) {
|
||||
c = byteBuffer.get();
|
||||
|
||||
// State Machine
|
||||
// 0 - Search for the first SPACE ' ' between the method and the
|
||||
// the request URI
|
||||
// 1 - Search for the second SPACE ' ' between the request URI
|
||||
// and the method
|
||||
switch(state) {
|
||||
case 0: // Search for first ' '
|
||||
if (c == 0x20){
|
||||
state = 1;
|
||||
start = byteBuffer.position();
|
||||
//start = byteBuffer.position() + 1;
|
||||
}
|
||||
break;
|
||||
case 1: // Search for next ' '
|
||||
if (c == 0x20){
|
||||
end = byteBuffer.position() - 1;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unexpected state");
|
||||
}
|
||||
}
|
||||
return false;
|
||||
} catch (BufferUnderflowException bue) {
|
||||
return false;
|
||||
} finally {
|
||||
if ( end > 0 ){
|
||||
byteBuffer.position(start);
|
||||
byteBuffer.limit(end);
|
||||
} else {
|
||||
byteBuffer.limit(curLimit);
|
||||
byteBuffer.position(curPosition);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class PeekBuffer {
|
||||
private boolean isWsdlQuery = false;
|
||||
private String token;
|
||||
|
||||
PeekBuffer(String token, boolean isWsdlQuery) {
|
||||
this.token = token;
|
||||
this.isWsdlQuery = isWsdlQuery;
|
||||
}
|
||||
|
||||
String getToken() {
|
||||
return this.token;
|
||||
}
|
||||
|
||||
boolean getIsWsdlQuery() {
|
||||
return this.isWsdlQuery;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -68,7 +68,6 @@ import javax.wsdl.Output;
|
|||
import javax.wsdl.Part;
|
||||
import javax.wsdl.Port;
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.ws.BindingProvider;
|
||||
import javax.xml.ws.Dispatch;
|
||||
import javax.xml.ws.Service;
|
||||
import javax.xml.ws.Service.Mode;
|
||||
|
@ -455,15 +454,11 @@ public class HttpEndpoint extends AbstractEndpoint {
|
|||
|
||||
public <T> Dispatch<T> createDispatch(String url, Class<T> type){
|
||||
Dispatch<T> d = dispatchCache.get(type);
|
||||
|
||||
if (d == null) {
|
||||
mService.addPort(mPortName, javax.xml.ws.http.HTTPBinding.HTTP_BINDING, url);
|
||||
d = mService.createDispatch(mPortName, type, Mode.MESSAGE);
|
||||
dispatchCache.put(type, d);
|
||||
}
|
||||
|
||||
d.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
|
||||
d.getRequestContext().put(javax.xml.ws.http.HTTPBinding.HTTP_BINDING, url);
|
||||
return d;
|
||||
}
|
||||
}
|
|
@ -113,6 +113,11 @@ import org.xml.sax.SAXException;
|
|||
|
||||
import com.sun.jbi.httpsoapbc.async.AsyncResponseDispatcher;
|
||||
import com.sun.jbi.httpsoapbc.DispatchPool;
|
||||
import com.sun.jbi.httpsoapbc.embedded.EndpointsManagerHttpHandler;
|
||||
import com.sun.jbi.httpsoapbc.embedded.GrizzlyEmbeddedWebContainer;
|
||||
import java.util.HashSet;
|
||||
import org.glassfish.grizzly.http.server.HttpServer;
|
||||
import org.glassfish.grizzly.http.server.NetworkListener;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -229,10 +234,8 @@ public class HttpSoapBindingLifeCycle
|
|||
mLogger = Messages.getLogger(getClass());
|
||||
|
||||
mJAXWSEndpointFactory = new JAXWSEndpointFactory();
|
||||
|
||||
mEmbeddedController = new EmbeddedServerController(this);
|
||||
|
||||
|
||||
|
||||
MBeanServer mbServer = jbiContext.getMBeanServer();
|
||||
MBeanNames mbnHndl = jbiContext.getMBeanNames();
|
||||
mProcessingExtensionMBeanName = mbnHndl.createCustomComponentMBeanName(PROCESSING_EXTENSION);
|
||||
|
@ -769,6 +772,11 @@ public class HttpSoapBindingLifeCycle
|
|||
}
|
||||
}
|
||||
|
||||
inboundThreadPool.shutdownNow();
|
||||
if (endpoint.getWSEndpoint() != null) {
|
||||
endpoint.getWSEndpoint().dispose();
|
||||
}
|
||||
|
||||
//de-register the external endpoint
|
||||
ServiceEndpoint sep = endpoint.getEndpointReference();
|
||||
if (sep != null) {
|
||||
|
@ -1079,6 +1087,10 @@ public class HttpSoapBindingLifeCycle
|
|||
return mServiceUnitManager.queryResource(context, endpoint);
|
||||
}
|
||||
|
||||
public Set<Endpoint> getRegisteredEndpoints() {
|
||||
return new HashSet<Endpoint>(mEndpoints.values());
|
||||
}
|
||||
|
||||
private void logComponentInfo() {
|
||||
StringBuffer msgBuf = new StringBuffer(
|
||||
mMessages.getString("HTTPBC-R00101.Binding_started_detailed",
|
||||
|
@ -1353,4 +1365,4 @@ public class HttpSoapBindingLifeCycle
|
|||
|
||||
return --refCount;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -80,6 +80,8 @@ import com.sun.jbi.nms.wsdl11wrapper.HelperFactory;
|
|||
import com.sun.jbi.nms.wsdl11wrapper.WrapperBuilder;
|
||||
import com.sun.jbi.nms.wsdl11wrapper.WrapperProcessingException;
|
||||
import com.sun.jbi.nms.wsdl11wrapper.util.WrapperUtil;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -369,7 +371,9 @@ public class Soap11Normalizer implements SoapNormalizer {
|
|||
mimeParts = metaData.getOutputSOAPMimeContents();
|
||||
}
|
||||
|
||||
//MimeHeaders mimeHeaders = soapMessage.getMimeHeaders();
|
||||
Set<String> resolvedAttachments = new HashSet<String>();
|
||||
|
||||
// Process MIME attachments
|
||||
Iterator mimeContents = mimeParts.values().iterator();
|
||||
while (mimeContents.hasNext()) {
|
||||
MIMEContent mimeContent = (MIMEContent) mimeContents.next();
|
||||
|
@ -389,9 +393,27 @@ public class Soap11Normalizer implements SoapNormalizer {
|
|||
// rely on the WrapperBuilder API to create the cid per the URI scheme
|
||||
String cid = wrapperBuilder.addPartWithAttachment(mimePart);
|
||||
normalMsg.addAttachment(cid, dataHandler);
|
||||
|
||||
resolvedAttachments.add(contentId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Process other attachments : MTOM, SWAREF
|
||||
for (Iterator attachments = soapMessage.getAttachments(); attachments.hasNext();) {
|
||||
AttachmentPart attachment = (AttachmentPart) attachments.next();
|
||||
String contentId = attachment.getContentId();
|
||||
|
||||
if (! resolvedAttachments.contains(contentId)) {
|
||||
DataHandler dataHandler = attachment.getDataHandler();
|
||||
// Be careful about <cid: ...>
|
||||
if (contentId.indexOf('<') == 0 && (contentId.indexOf('>') == contentId.length() - 1)) {
|
||||
contentId = contentId.substring(1, contentId.length() - 1);
|
||||
}
|
||||
|
||||
normalMsg.addAttachment(contentId, dataHandler);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void processSoapBody(WrapperBuilder wrapperBuilder, SOAPBody soapElement, OperationMetaData meta, boolean inMsg)
|
||||
|
@ -956,4 +978,4 @@ public class Soap11Normalizer implements SoapNormalizer {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue