Author: objectiser
Date: 2010-11-24 13:43:49 -0500 (Wed, 24 Nov 2010)
New Revision: 1151
Added:
dsp/trunk/api/pom.xml
dsp/trunk/jboss/
dsp/trunk/jboss/pom.xml
dsp/trunk/jboss/src/
dsp/trunk/jboss/src/main/
dsp/trunk/jboss/src/main/java/
dsp/trunk/jboss/src/main/java/org/
dsp/trunk/jboss/src/main/java/org/jboss/
dsp/trunk/jboss/src/main/java/org/jboss/soa/
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/deployer/
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/deployer/jboss/
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/deployer/jboss/JBossServiceDeployer.java
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/deployer/jboss/WebMetaDataFactory.java
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/KernelAwareSPIFactory.java
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/KernelLocator.java
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/MBeanServerLocator.java
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/ObjectNameFactory.java
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/ServerConfigFactory.java
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/ServerConfigImpl.java
dsp/trunk/jboss/src/main/resources/
dsp/trunk/jboss/src/main/resources/META-INF/
dsp/trunk/jboss/src/main/resources/META-INF/jboss-beans.xml
dsp/trunk/jboss/src/test/
dsp/trunk/jboss/src/test/java/
dsp/trunk/jboss/src/test/resources/
Removed:
dsp/trunk/api/src/main/java/org/jboss/soa/dsp/deployer/jboss/
dsp/trunk/api/src/main/java/org/jboss/soa/dsp/server/jboss/
Modified:
dsp/trunk/api/
dsp/trunk/pom.xml
Log:
Restructured to separate into api and platform specific (jboss initially) modules.
Property changes on: dsp/trunk/api
___________________________________________________________________
Name: svn:ignore
+ .settings
target
.classpath
.project
Added: dsp/trunk/api/pom.xml
===================================================================
--- dsp/trunk/api/pom.xml (rev 0)
+++ dsp/trunk/api/pom.xml 2010-11-24 18:43:49 UTC (rev 1151)
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.soa.dsp</groupId>
+ <artifactId>dsp-api</artifactId>
+ <packaging>jar</packaging>
+ <version>1.0.0-SNAPSHOT</version>
+ <name>SOA::DSP::API</name>
+
+ <parent>
+ <groupId>org.jboss.soa</groupId>
+ <artifactId>dsp</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <dependencies>
+ <dependency>
+ <groupId>wsdl4j</groupId>
+ <artifactId>wsdl4j</artifactId>
+ <version>${wsdl4j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>${commons.logging.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>javassist</groupId>
+ <artifactId>javassist</artifactId>
+ <version>${javassist.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.xml.ws</groupId>
+ <artifactId>jaxws-api</artifactId>
+ <version>${jaxws.version}</version>
+ </dependency>
+ </dependencies>
+
+</project>
Added: dsp/trunk/jboss/pom.xml
===================================================================
--- dsp/trunk/jboss/pom.xml (rev 0)
+++ dsp/trunk/jboss/pom.xml 2010-11-24 18:43:49 UTC (rev 1151)
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.soa.dsp</groupId>
+ <artifactId>dsp-jboss</artifactId>
+ <packaging>jar</packaging>
+ <version>1.0.0-SNAPSHOT</version>
+ <name>SOA::DSP::JBoss</name>
+
+ <parent>
+ <groupId>org.jboss.soa</groupId>
+ <artifactId>dsp</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.soa.dsp</groupId>
+ <artifactId>dsp-api</artifactId>
+ <version>${dsp.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>wsdl4j</groupId>
+ <artifactId>wsdl4j</artifactId>
+ <version>${wsdl4j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>${commons.logging.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>javassist</groupId>
+ <artifactId>javassist</artifactId>
+ <version>${javassist.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.xml.ws</groupId>
+ <artifactId>jaxws-api</artifactId>
+ <version>${jaxws.version}</version>
+ </dependency>
+
+ <!-- Dependencies for JBoss specific deployer -->
+ <dependency>
+ <groupId>org.jboss.metadata</groupId>
+ <artifactId>jboss-metadata</artifactId>
+ <version>${jboss.metadata.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-kernel</artifactId>
+ <version>${jboss.microcontainer.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-dependency</artifactId>
+ <version>${jboss.microcontainer.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.deployers</groupId>
+ <artifactId>jboss-deployers-client-spi</artifactId>
+ <version>${jboss.deployers.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.deployers</groupId>
+ <artifactId>jboss-deployers-core-spi</artifactId>
+ <version>${jboss.deployers.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.deployers</groupId>
+ <artifactId>jboss-deployers-structure-spi</artifactId>
+ <version>${jboss.deployers.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.deployers</groupId>
+ <artifactId>jboss-deployers-vfs-spi</artifactId>
+ <version>${jboss.deployers.version}</version>
+ </dependency>
+
+ </dependencies>
+</project>
Added:
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/deployer/jboss/JBossServiceDeployer.java
===================================================================
---
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/deployer/jboss/JBossServiceDeployer.java
(rev 0)
+++
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/deployer/jboss/JBossServiceDeployer.java 2010-11-24
18:43:49 UTC (rev 1151)
@@ -0,0 +1,128 @@
+/*
+ * Copyright 2010 Red Hat, Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.jboss.soa.dsp.deployer.jboss;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.deployers.client.spi.DeployerClient;
+import org.jboss.deployers.client.spi.Deployment;
+import org.jboss.deployers.spi.attachments.MutableAttachments;
+import org.jboss.deployers.structure.spi.ClassLoaderFactory;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.structure.spi.DeploymentUnitFilter;
+import org.jboss.deployers.vfs.spi.client.VFSDeploymentFactory;
+import org.jboss.kernel.Kernel;
+import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.soa.dsp.EndpointMetaData;
+import org.jboss.soa.dsp.ServiceEndpointReference;
+import org.jboss.soa.dsp.deployer.ServiceDeployer;
+import org.jboss.soa.dsp.server.jboss.KernelLocator;
+import org.jboss.virtual.VFS;
+import org.jboss.virtual.VirtualFile;
+
+public class JBossServiceDeployer implements ServiceDeployer {
+
+ public ServiceEndpointReference deploy(EndpointMetaData metaData, Class<?>
providerImpl, URL serviceUrl,
+ final ClassLoader classLoader, File warArchive) throws Exception {
+ Deployment deployment = createVFSDeployment(warArchive);
+
+ // Classloading
+ ClassLoaderFactory clf = new DelegatingClassLoaderFactory(classLoader);
+
+ // WebMetaData
+ String[] webContext = deriveWebContextFromServiceUrl(serviceUrl);
+
+ WebMetaDataFactory wmdFactory = new WebMetaDataFactory(
+ metaData.getEndpointId(), webContext[0], webContext[1],
providerImpl.getName()
+ );
+
+ MutableAttachments mutableAttachments =
+ (MutableAttachments)deployment.getPredeterminedManagedObjects();
+
+ // Applies to in memory only. Not used with VFS underneath
+ //mutableAttachments.addAttachment(StructureMetaData.class, new
StructureMetaDataImpl());
+ mutableAttachments.addAttachment(ClassLoaderFactory.class, clf);
+ mutableAttachments.addAttachment(JBossWebMetaData.class,
wmdFactory.createWebMetaData(classLoader));
+ mutableAttachments.addAttachment(DeploymentUnitFilter.class, new
RiftsawWSDeploymentUnitFilter());
+
+ getMainDeployer().deploy(deployment);
+
+ ServiceEndpointReference ref = new ServiceEndpointReference(
+ metaData.getEndpointId(), serviceUrl, deployment.getName(),
warArchive.getAbsolutePath()
+ );
+
+ //ref.setArchiveLocation(warArchive.getAbsolutePath());
+
+ return(ref);
+ }
+
+ public void undeploy(ServiceEndpointReference ref) throws Exception {
+ getMainDeployer().undeploy(ref.getDeploymentName());
+ }
+
+ private String[] deriveWebContextFromServiceUrl(URL serviceUrl) {
+ // metadata based on soapAddress
+ String urlPathInfo = serviceUrl.getPath(); // has always leading slash
+ urlPathInfo = urlPathInfo.substring(1, urlPathInfo.length());
+
+ String actualWebContext;
+ String actualUrlPattern;
+ actualWebContext = urlPathInfo;
+ actualUrlPattern = "/*";
+
+ return new String[] {actualWebContext, actualUrlPattern};
+ }
+
+ private Deployment createVFSDeployment(File war) throws IOException {
+ VirtualFile webAppVFS = VFS.getRoot(war.toURI().toURL());
+ return VFSDeploymentFactory.getInstance().createVFSDeployment(webAppVFS);
+ }
+
+ private DeployerClient getMainDeployer() {
+ Kernel mc = KernelLocator.getKernel();
+ ControllerContext context =
mc.getController().getInstalledContext("MainDeployer");
+ DeployerClient mainDeployer = (DeployerClient)context.getTarget();
+ return mainDeployer;
+ }
+
+ public class DelegatingClassLoaderFactory implements ClassLoaderFactory {
+ private ClassLoader delegate;
+
+ public DelegatingClassLoaderFactory(final ClassLoader delegate) {
+ this.delegate = delegate;
+ }
+
+ public ClassLoader createClassLoader(DeploymentUnit unit) throws Exception {
+ return delegate;
+ }
+
+ public void removeClassLoader(DeploymentUnit unit) throws Exception {
+ // cleanup?
+ }
+ }
+
+ public class RiftsawWSDeploymentUnitFilter implements DeploymentUnitFilter {
+ public boolean accepts(DeploymentUnit unit) {
+ // When I am attached, it's always a BPEL deployment
+ return false;
+ }
+ }
+
+}
Added:
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/deployer/jboss/WebMetaDataFactory.java
===================================================================
---
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/deployer/jboss/WebMetaDataFactory.java
(rev 0)
+++
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/deployer/jboss/WebMetaDataFactory.java 2010-11-24
18:43:49 UTC (rev 1151)
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2010 Red Hat, Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.jboss.soa.dsp.deployer.jboss;
+
+import org.jboss.metadata.web.jboss.JBossServletMetaData;
+import org.jboss.metadata.web.jboss.JBossServletsMetaData;
+import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.metadata.web.spec.ServletMappingMetaData;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Creates an in-memory representation of web meta data.
+ * Based on
http://anonsvn.jboss.org/repos/jbossas/tags/JBoss_5_1_0_GA/webservices/sr...
+ *
+ * @author Heiko.Braun <heiko.braun(a)jboss.com>
+ */
+public class WebMetaDataFactory
+{
+ private String endpointId;
+ private String servletClassName = null;
+ private String webContext = null;
+ private String urlPattern = null;
+
+ public WebMetaDataFactory(String endpointId, String webContext, String urlPattern,
String servletClassName)
+ {
+ this.endpointId = endpointId;
+ this.servletClassName = servletClassName;
+ this.webContext = webContext;
+ this.urlPattern = urlPattern;
+ }
+
+ public JBossWebMetaData createWebMetaData(ClassLoader loader)
+ {
+ JBossWebMetaData jbwmd = new JBossWebMetaData();
+ createWebAppDescriptor(jbwmd);
+ createJBossWebAppDescriptor(jbwmd);
+ return jbwmd;
+ }
+
+ private void createWebAppDescriptor(JBossWebMetaData jbwmd)
+ {
+ /*
+ <servlet>
+ <servlet-name>
+ <servlet-class>
+ </servlet>
+ */
+ JBossServletsMetaData servlets = jbwmd.getServlets();
+ JBossServletMetaData servlet = new JBossServletMetaData();
+ servlet.setServletName("Endpoint-"+endpointId);
+ servlet.setServletClass(servletClassName);
+ servlets.add(servlet);
+
+
+ /*
+ <servlet-mapping>
+ <servlet-name>
+ <url-pattern>
+ </servlet-mapping>
+ */
+ List<ServletMappingMetaData> servletMappings = jbwmd.getServletMappings();
+ if (servletMappings == null)
+ {
+ servletMappings = new ArrayList<ServletMappingMetaData>();
+ jbwmd.setServletMappings(servletMappings);
+ }
+ ServletMappingMetaData servletMapping = new ServletMappingMetaData();
+ servletMapping.setServletName("Endpoint-"+endpointId);
+ ArrayList<String> urlPatterns = new ArrayList<String>();
+ urlPatterns.add(urlPattern);
+ servletMapping.setUrlPatterns(urlPatterns);
+ servletMappings.add(servletMapping);
+
+ }
+
+ private void createJBossWebAppDescriptor(JBossWebMetaData jbwmd)
+ {
+ /* Create a jboss-web
+ <jboss-web>
+ <security-domain>java:/jaas/cts</security-domain>
+ <context-root>/ws/ejbN/</context-root>
+ <virtual-host>some.domain.com</virtual-host>
+ </jboss-web>
+ */
+
+ jbwmd.setContextRoot(webContext);
+ }
+}
Added:
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/KernelAwareSPIFactory.java
===================================================================
---
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/KernelAwareSPIFactory.java
(rev 0)
+++
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/KernelAwareSPIFactory.java 2010-11-24
18:43:49 UTC (rev 1151)
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2010 Red Hat, Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.jboss.soa.dsp.server.jboss;
+
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.kernel.spi.dependency.KernelController;
+
+/**
+ * SPI factory delegating to kernel for bean lookups
+ *
+ * @author richard.opalka(a)jboss.com
+ * @author Heiko.Braun(a)jboss.com
+ */
+public class KernelAwareSPIFactory
+{
+ @SuppressWarnings("unchecked")
+ public <T> T getKernelProvidedSPI(String beanName, Class<T> spiArtifact)
+ {
+ KernelController controller = KernelLocator.getKernel().getController();
+ ControllerContext ctx = controller.getInstalledContext(beanName);
+ return (T)ctx.getTarget();
+ }
+}
\ No newline at end of file
Added: dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/KernelLocator.java
===================================================================
--- dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/KernelLocator.java
(rev 0)
+++
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/KernelLocator.java 2010-11-24
18:43:49 UTC (rev 1151)
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2010 Red Hat, Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.jboss.soa.dsp.server.jboss;
+
+//$Id$
+
+import org.jboss.kernel.Kernel;
+
+/**
+ * Locate the single instance of the kernel
+ *
+ * @author Thomas.Diesler(a)jboss.org
+ * @since 12-May-2006
+ */
+public class KernelLocator
+{
+ private static Kernel kernel;
+
+ public static Kernel getKernel()
+ {
+ return KernelLocator.kernel;
+ }
+
+ public void setKernel(Kernel kernel)
+ {
+ KernelLocator.kernel = kernel;
+ }
+}
Added:
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/MBeanServerLocator.java
===================================================================
--- dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/MBeanServerLocator.java
(rev 0)
+++
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/MBeanServerLocator.java 2010-11-24
18:43:49 UTC (rev 1151)
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2010 Red Hat, Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.jboss.soa.dsp.server.jboss;
+
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import java.util.Iterator;
+
+/**
+ * Locate the single instance of the MBeanServer
+ *
+ * @author Thomas.Diesler(a)jboss.org
+ * @since 30-Jul-2007
+ */
+public class MBeanServerLocator
+{
+ private MBeanServer mbeanServer;
+
+ public MBeanServer getMbeanServer()
+ {
+ // In jboss-4.2 the MBeanServer cannot be injected
+ if (mbeanServer == null)
+ {
+ for (Iterator i = MBeanServerFactory.findMBeanServer(null).iterator();
i.hasNext();)
+ {
+ mbeanServer = (MBeanServer)i.next();
+ break;
+ }
+ }
+ return mbeanServer;
+ }
+
+ public void setMbeanServer(MBeanServer mbeanServer)
+ {
+ this.mbeanServer = mbeanServer;
+ }
+}
Added:
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/ObjectNameFactory.java
===================================================================
--- dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/ObjectNameFactory.java
(rev 0)
+++
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/ObjectNameFactory.java 2010-11-24
18:43:49 UTC (rev 1151)
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2010 Red Hat, Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.jboss.soa.dsp.server.jboss;
+
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import java.util.Hashtable;
+
+/**
+ * A simple factory for creating safe object names.
+ *
+ * @author Thomas.Diesler(a)jboss.org
+ * @since 08-May-2006
+ */
+public class ObjectNameFactory
+{
+ public static ObjectName create(String name)
+ {
+ try
+ {
+ return new ObjectName(name);
+ }
+ catch (MalformedObjectNameException e)
+ {
+ throw new Error("Invalid ObjectName: " + name + "; " + e);
+ }
+ }
+
+ public static ObjectName create(String domain, String key, String value)
+ {
+ try
+ {
+ return new ObjectName(domain, key, value);
+ }
+ catch (MalformedObjectNameException e)
+ {
+ throw new Error("Invalid ObjectName: " + domain + "," + key +
"," + value + "; " + e);
+ }
+ }
+
+ public static ObjectName create(String domain, Hashtable table)
+ {
+ try
+ {
+ return new ObjectName(domain, table);
+ }
+ catch (MalformedObjectNameException e)
+ {
+ throw new Error("Invalid ObjectName: " + domain + "," + table +
"; " + e);
+ }
+ }
+}
Added:
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/ServerConfigFactory.java
===================================================================
--- dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/ServerConfigFactory.java
(rev 0)
+++
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/ServerConfigFactory.java 2010-11-24
18:43:49 UTC (rev 1151)
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2010 Red Hat, Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.jboss.soa.dsp.server.jboss;
+
+import org.jboss.soa.dsp.server.ServerConfig;
+
+
+/**
+ * Factory to container independent config
+ *
+ * @author Thomas.Diesler(a)jboss.org
+ * @author Heiko.Braun(a)jboss.com
+ *
+ * @since 08-May-2006
+ */
+public class ServerConfigFactory
+{
+ /** The default bean name */
+ public static String BEAN_NAME = "org.jboss.soa.dsp:service=ServerConfig";
+
+ public static ServerConfig getServerConfig()
+ {
+ return new KernelAwareSPIFactory().getKernelProvidedSPI(
+ BEAN_NAME, ServerConfig.class
+ );
+ }
+}
\ No newline at end of file
Added: dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/ServerConfigImpl.java
===================================================================
--- dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/ServerConfigImpl.java
(rev 0)
+++
dsp/trunk/jboss/src/main/java/org/jboss/soa/dsp/server/jboss/ServerConfigImpl.java 2010-11-24
18:43:49 UTC (rev 1151)
@@ -0,0 +1,247 @@
+/*
+ * Copyright 2010 Red Hat, Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.jboss.soa.dsp.server.jboss;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.soa.dsp.server.ServerConfig;
+import org.jboss.util.id.GUID;
+
+import javax.management.AttributeNotFoundException;
+import javax.management.JMException;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import java.io.File;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Set;
+
+/**
+ * @author Heiko.Braun <heiko.braun(a)jboss.com>
+ */
+public class ServerConfigImpl implements ServerConfig
+{
+ protected final Log log = LogFactory.getLog(getClass());
+
+ // The MBeanServer
+ private MBeanServer mbeanServer;
+
+ private final static String UNDEFINED_HOSTNAME = "undefined.host";
+
+ // The webservice host name that will be used when updating the wsdl
+ private String webServiceHost = UNDEFINED_HOSTNAME;
+ // The webservice port that will be used when updating the wsdl
+ private int webServicePort;
+ // The webservice port that will be used when updating the wsdl
+ private int webServiceSecurePort;
+
+ private static String nonClusteredServerName=new GUID().toString();
+
+ private String clusterNodeName;
+
+ public ServerConfigImpl()
+ {
+ }
+
+ public MBeanServer getMbeanServer()
+ {
+ return mbeanServer;
+ }
+
+ public void setMbeanServer(MBeanServer mbeanServer)
+ {
+ this.mbeanServer = mbeanServer;
+ }
+
+ public String getImplementationTitle()
+ {
+ return "jbossas-riftsaw";
+ }
+
+ public String getImplementationVersion()
+ {
+ return "5.x";
+ }
+
+ public File getServerTempDir()
+ {
+ try
+ {
+ ObjectName oname =
ObjectNameFactory.create("jboss.system:type=ServerConfig");
+ File dir = (File)getMbeanServer().getAttribute(oname, "ServerTempDir");
+ return dir;
+ }
+ catch (JMException e)
+ {
+ return null;
+ }
+ }
+
+ public File getHomeDir()
+ {
+ try
+ {
+ ObjectName oname =
ObjectNameFactory.create("jboss.system:type=ServerConfig");
+ File dir = (File)getMbeanServer().getAttribute(oname, "HomeDir");
+ return dir;
+ }
+ catch (JMException e)
+ {
+ return null;
+ }
+ }
+
+ public File getServerDataDir()
+ {
+ try
+ {
+ ObjectName oname =
ObjectNameFactory.create("jboss.system:type=ServerConfig");
+ File dir = (File)getMbeanServer().getAttribute(oname, "ServerDataDir");
+ return dir;
+ }
+ catch (JMException e)
+ {
+ return null;
+ }
+ }
+
+ public String getWebServiceHost()
+ {
+ return webServiceHost;
+ }
+
+ public void setWebServiceHost(String host) throws UnknownHostException
+ {
+ if (host == null || host.trim().length() == 0)
+ {
+ log.debug("Using undefined host: " + UNDEFINED_HOSTNAME);
+ host = UNDEFINED_HOSTNAME;
+ }
+ if ("0.0.0.0".equals(host))
+ {
+ InetAddress localHost = InetAddress.getLocalHost();
+ log.debug("Using local host: " + localHost.getHostName());
+ host = localHost.getHostName();
+ }
+ this.webServiceHost = host;
+ }
+
+ public void setWebServicePort(int port)
+ {
+ this.webServicePort = port;
+ }
+
+ public void setWebServiceSecurePort(int port)
+ {
+ this.webServiceSecurePort = port;
+ }
+
+ public int getWebServicePort()
+ {
+ if (webServicePort <= 0)
+ webServicePort = getConnectorPort("HTTP/1.1", false);
+
+ int localPort = webServicePort;
+ if (localPort <= 0)
+ {
+ // Do not initialize webServicePort with the default, the connector port may become
available later
+ log.warn("Unable to calculate 'WebServicePort', using default
'8080'");
+ localPort = 8080;
+ }
+
+ return localPort;
+ }
+
+
+ public int getWebServiceSecurePort()
+ {
+ if (webServiceSecurePort <= 0)
+ webServiceSecurePort = getConnectorPort("HTTP/1.1", true);
+
+ int localPort = webServiceSecurePort;
+ if (localPort <= 0)
+ {
+ // Do not initialize webServiceSecurePort with the default, the connector port may
become available later
+ log.warn("Unable to calculate 'WebServiceSecurePort', using default
'8443'");
+ localPort = 8443;
+ }
+
+ return localPort;
+ }
+
+ private int getConnectorPort(final String protocol, final boolean secure)
+ {
+ int port = -1;
+
+ try
+ {
+ ObjectName connectors = new ObjectName("jboss.web:type=Connector,*");
+
+ Set connectorNames = getMbeanServer().queryNames(connectors, null);
+ for (Object current : connectorNames)
+ {
+ ObjectName currentName = (ObjectName)current;
+
+ try
+ {
+ int connectorPort = (Integer)getMbeanServer().getAttribute(currentName,
"port");
+ boolean connectorSecure = (Boolean)getMbeanServer().getAttribute(currentName,
"secure");
+ String connectorProtocol = (String)getMbeanServer().getAttribute(currentName,
"protocol");
+
+
+ if (protocol.equals(connectorProtocol) && secure == connectorSecure)
+ {
+ if (port > -1)
+ {
+ log.warn("Found multiple connectors for protocol='" +
protocol + "' and secure='" + secure + "', using first port
found '" + port + "'");
+ }
+ else
+ {
+ port = connectorPort;
+ }
+ }
+ }
+ catch (AttributeNotFoundException ignored)
+ {
+ }
+ }
+
+ return port;
+ }
+ catch (JMException e)
+ {
+ return -1;
+ }
+ }
+
+ public String getClusterNodeName() {
+ if (this.clusterNodeName == null || "".equals(this.clusterNodeName.trim()))
{
+ return nonClusteredServerName;
+ }
+ return this.clusterNodeName;
+ }
+
+ public void setClusterNodeName(String clusterNodeName) {
+ this.clusterNodeName = clusterNodeName;
+ }
+
+
+ public String getUddiNodeName() {
+ return this.getWebServiceHost() + "-" + this.getWebServicePort();
+ }
+
+}
Added: dsp/trunk/jboss/src/main/resources/META-INF/jboss-beans.xml
===================================================================
--- dsp/trunk/jboss/src/main/resources/META-INF/jboss-beans.xml
(rev 0)
+++ dsp/trunk/jboss/src/main/resources/META-INF/jboss-beans.xml 2010-11-24 18:43:49 UTC
(rev 1151)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <!--
+ Locate the single instance of the kernel
+ -->
+ <bean name="org.jboss.soa.dsp:service=KernelLocator"
+ class="org.jboss.soa.dsp.server.jboss.KernelLocator">
+ <property name="kernel">
+ <inject bean="jboss.kernel:service=Kernel" />
+ </property>
+ </bean>
+
+ <!--
+ ServerConfig
+ -->
+ <bean name="org.jboss.soa.dsp:service=ServerConfig"
+ class="org.jboss.soa.dsp.server.jboss.ServerConfigImpl">
+ <property name="mbeanServer"><inject bean="JMXKernel"
property="mbeanServer"/></property>
+ <property
name="webServiceHost">${jboss.bind.address}</property>
+ </bean>
+
+
+</deployment>
Modified: dsp/trunk/pom.xml
===================================================================
--- dsp/trunk/pom.xml 2010-11-24 18:35:12 UTC (rev 1150)
+++ dsp/trunk/pom.xml 2010-11-24 18:43:49 UTC (rev 1151)
@@ -4,11 +4,12 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.soa</groupId>
<artifactId>dsp</artifactId>
- <packaging>jar</packaging>
+ <packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>SOA::DSP</name>
<properties>
+ <dsp.version>1.0.0-SNAPSHOT</dsp.version>
<junit.version>4.8.1</junit.version>
<jboss.version>5.1.0.GA</jboss.version>
<jaxws.version>2.1</jaxws.version>
@@ -20,81 +21,12 @@
<jboss.deployers.version>2.0.7.GA</jboss.deployers.version>
</properties>
- <dependencies>
- <dependency>
- <groupId>wsdl4j</groupId>
- <artifactId>wsdl4j</artifactId>
- <version>${wsdl4j.version}</version>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>${commons.logging.version}</version>
- </dependency>
- <dependency>
- <groupId>javassist</groupId>
- <artifactId>javassist</artifactId>
- <version>${javassist.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.xml.ws</groupId>
- <artifactId>jaxws-api</artifactId>
- <version>${jaxws.version}</version>
- </dependency>
-
- <!-- Dependencies for JBoss specific deployer -->
- <dependency>
- <groupId>org.jboss.metadata</groupId>
- <artifactId>jboss-metadata</artifactId>
- <version>${jboss.metadata.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-kernel</artifactId>
- <version>${jboss.microcontainer.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-dependency</artifactId>
- <version>${jboss.microcontainer.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.deployers</groupId>
- <artifactId>jboss-deployers-client-spi</artifactId>
- <version>${jboss.deployers.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.deployers</groupId>
- <artifactId>jboss-deployers-core-spi</artifactId>
- <version>${jboss.deployers.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.deployers</groupId>
- <artifactId>jboss-deployers-structure-spi</artifactId>
- <version>${jboss.deployers.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.deployers</groupId>
- <artifactId>jboss-deployers-vfs-spi</artifactId>
- <version>${jboss.deployers.version}</version>
- </dependency>
+ <modules>
+ <module>api</module>
+ <module>jboss</module>
+ </modules>
- </dependencies>
-
- <distributionManagement>
- <repository>
- <id>jboss-releases-repository</id>
- <name>JBoss Releases Repository</name>
-
<
url>https://repository.jboss.org/nexus/service/local/staging/deploy/ma...
- </repository>
- <snapshotRepository>
- <id>jboss-snapshots-repository</id>
- <name>JBoss Snapshots Repository</name>
-
<
url>https://repository.jboss.org/nexus/content/repositories/snapshots/...
- </snapshotRepository>
- </distributionManagement>
-
<build>
<!-- This section defines the default plugin settings inherited by child projects.
-->
<pluginManagement>
@@ -161,6 +93,19 @@
</plugins>
</build>
+ <distributionManagement>
+ <repository>
+ <id>jboss-releases-repository</id>
+ <name>JBoss Releases Repository</name>
+
<
url>https://repository.jboss.org/nexus/service/local/staging/deploy/ma...
+ </repository>
+ <snapshotRepository>
+ <id>jboss-snapshots-repository</id>
+ <name>JBoss Snapshots Repository</name>
+
<
url>https://repository.jboss.org/nexus/content/repositories/snapshots/...
+ </snapshotRepository>
+ </distributionManagement>
+
<reporting>
<plugins>
<plugin>