Repository: juddi Updated Branches: refs/heads/feature/JUDDI-942 [created] a563edb1b
JUDDI-942 Automatic instantiation of UDDIClerkServlet Project: http://git-wip-us.apache.org/repos/asf/juddi/repo Commit: http://git-wip-us.apache.org/repos/asf/juddi/commit/a563edb1 Tree: http://git-wip-us.apache.org/repos/asf/juddi/tree/a563edb1 Diff: http://git-wip-us.apache.org/repos/asf/juddi/diff/a563edb1 Branch: refs/heads/feature/JUDDI-942 Commit: a563edb1b239bc6f37845d9b5d6f485a1fc593b5 Parents: fe5dcfa Author: Alex <[email protected]> Authored: Fri Dec 4 22:56:13 2015 -0500 Committer: Alex <[email protected]> Committed: Fri Dec 4 22:56:13 2015 -0500 ---------------------------------------------------------------------- juddi-client/pom.xml | 11 +-- .../config/UDDIServletContextListener.java | 91 ++++++++++++++++++++ .../config/model/JUDDI_943_testInterface.java | 24 ++++++ .../config/model/JUDDI_943_testService.java | 48 +++++++++++ .../src/test/resources/META-INF/JUDDI-943.xml | 58 +++++++++++++ 5 files changed, 227 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/juddi/blob/a563edb1/juddi-client/pom.xml ---------------------------------------------------------------------- diff --git a/juddi-client/pom.xml b/juddi-client/pom.xml index 8c38d92..5612eba 100644 --- a/juddi-client/pom.xml +++ b/juddi-client/pom.xml @@ -48,11 +48,12 @@ <version>3.2</version> </dependency> <dependency> - <groupId>javax.servlet</groupId> - <artifactId>servlet-api</artifactId> - <version>2.5</version> - <scope>provided</scope> - </dependency> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + <version>3.1.0</version> + <scope>provided</scope> + </dependency> + <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> http://git-wip-us.apache.org/repos/asf/juddi/blob/a563edb1/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIServletContextListener.java ---------------------------------------------------------------------- diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIServletContextListener.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIServletContextListener.java new file mode 100644 index 0000000..7de07af --- /dev/null +++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIServletContextListener.java @@ -0,0 +1,91 @@ +/* + * Copyright 2015 The Apache Software Foundation. + * + * 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.apache.juddi.v3.client.config; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import javax.servlet.Servlet; +import javax.servlet.ServletContext; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author alex + */ +public class UDDIServletContextListener implements ServletContextListener { + + public static final Log logger = LogFactory.getLog(UDDIServletContextListener.class); + private static final String JUDDI_SERVLET_NAME = "juddi-servlet"; + + @Override + public void contextInitialized(ServletContextEvent servletContextEvent) { + logger.info("Registering JUDDI servlet '" + JUDDI_SERVLET_NAME + "' to automatically register service"); + ServletContext servletContext = servletContextEvent.getServletContext(); + boolean success = false; + try { + configureUddiClient(servletContext); + Method m = ServletContext.class.getMethod("addServlet", String.class, Servlet.class); + if (m != null) { + //should have one of these + // ServletRegistration.Dynamic dynamic = servletContext.addServlet(JUDDI_SERVLET_NAME, UDDIClerkServlet.class); + Object obj = m.invoke(servletContext, JUDDI_SERVLET_NAME, UDDIClerkServlet.class); + Method setLoadOnStartup = obj.getClass().getMethod("setLoadOnStartup", int.class); + if (setLoadOnStartup != null) { + setLoadOnStartup.invoke(obj, 1); + success = true; + } + } + } catch (NoSuchMethodException ex) { + logger.debug("Probably not in a servlet container > v3.0. probably time to upgrade?", ex); + } catch (SecurityException ex) { + logger.warn("Probably not in a servlet container > v3.0. probably time to upgrade?", ex); + } catch (IllegalAccessException ex) { + logger.warn("Probably not in a servlet container > v3.0. probably time to upgrade?", ex); + } catch (IllegalArgumentException ex) { + logger.warn("Probably not in a servlet container > v3.0. probably time to upgrade?", ex); + } catch (InvocationTargetException ex) { + logger.warn("Probably not in a servlet container > v3.0. probably time to upgrade?", ex); + } catch (Throwable ex) { + logger.warn("Probably not in a servlet container > v3.0. probably time to upgrade?", ex); + } + if (success) { + logger.info("Successfully automatic registration of the UDDIClerkServlet using servlet spec 3.0+."); + } else { + logger.info("NOT Successful - autoregisteration the UDDIClerkServlet using servlet spec 3.0+. You'll have to set this up using web.xml if desired. See error log for additional details."); + } + //ServletRegistration.Dynamic dynamic = servletContext.addServlet(JUDDI_SERVLET_NAME, UDDIClerkServlet.class); + //dynamic.setLoadOnStartup(1); + } + + /** + * override this function if you want to do some custom configurations + * before the juddi config files are loaded + * + * @param servletContext + */ + public void configureUddiClient(ServletContext servletContext) { + + } + + @Override + public void contextDestroyed(ServletContextEvent servletContextEvent) { + } + +} http://git-wip-us.apache.org/repos/asf/juddi/blob/a563edb1/juddi-client/src/test/java/org/apache/juddi/v3/client/config/model/JUDDI_943_testInterface.java ---------------------------------------------------------------------- diff --git a/juddi-client/src/test/java/org/apache/juddi/v3/client/config/model/JUDDI_943_testInterface.java b/juddi-client/src/test/java/org/apache/juddi/v3/client/config/model/JUDDI_943_testInterface.java new file mode 100644 index 0000000..0b9ac7e --- /dev/null +++ b/juddi-client/src/test/java/org/apache/juddi/v3/client/config/model/JUDDI_943_testInterface.java @@ -0,0 +1,24 @@ +/* + * Copyright 2015 The Apache Software Foundation. + * + * 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.apache.juddi.v3.client.config.model; + +/** + * + * @author alex + */ +public interface JUDDI_943_testInterface { + public String sayHell(String name); +} http://git-wip-us.apache.org/repos/asf/juddi/blob/a563edb1/juddi-client/src/test/java/org/apache/juddi/v3/client/config/model/JUDDI_943_testService.java ---------------------------------------------------------------------- diff --git a/juddi-client/src/test/java/org/apache/juddi/v3/client/config/model/JUDDI_943_testService.java b/juddi-client/src/test/java/org/apache/juddi/v3/client/config/model/JUDDI_943_testService.java new file mode 100644 index 0000000..248d08e --- /dev/null +++ b/juddi-client/src/test/java/org/apache/juddi/v3/client/config/model/JUDDI_943_testService.java @@ -0,0 +1,48 @@ +/* + * Copyright 2015 The Apache Software Foundation. + * + * 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.apache.juddi.v3.client.config.model; + +import java.text.SimpleDateFormat; +import javax.jws.WebService; +import org.apache.juddi.v3.annotations.UDDIService; +import org.apache.juddi.v3.annotations.UDDIServiceBinding; + +/** + * + * @author alex + */ +@UDDIService( + businessKey="uddi:myBusinessKey", + serviceKey="uddi:myServiceKey", + description = "Hello World test service") +@UDDIServiceBinding( + bindingKey="uddi:myServiceBindingKey", + description="WSDL endpoint for the helloWorld Service. This service is used for " + + "testing the jUDDI annotation functionality", + accessPointType="wsdlDeployment", + accessPoint="http://localhost:8080/juddiv3-samples/services/helloworld?wsdl") +@WebService( + endpointInterface = "org.apache.juddi.samples.HelloWorld", + serviceName = "HelloWorld") +public class JUDDI_943_testService implements JUDDI_943_testInterface{ + + static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); + @Override + public String sayHell(String name) { + return "Hi " + name + "! It is now " ; + } + +} http://git-wip-us.apache.org/repos/asf/juddi/blob/a563edb1/juddi-client/src/test/resources/META-INF/JUDDI-943.xml ---------------------------------------------------------------------- diff --git a/juddi-client/src/test/resources/META-INF/JUDDI-943.xml b/juddi-client/src/test/resources/META-INF/JUDDI-943.xml new file mode 100644 index 0000000..04e131b --- /dev/null +++ b/juddi-client/src/test/resources/META-INF/JUDDI-943.xml @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Copyright 2015 The Apache Software Foundation. + +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. +--> + +<uddi xmlns="urn:juddi-apache-org:v3_client"> + <reloadDelay>5000</reloadDelay> + <client name="test-client"> + <nodes> + <node isHomeJUDDI="true"> + <!-- required 'default' node --> + <name>uddiv3</name> + <description>Main jUDDI node</description> + <properties> + <property name="serverName" value="localhost"/> + <property name="serverPort" value="8080"/> + <!-- for UDDI nodes that use HTTP u/p, using the following + <property name="basicAuthUsername" value="root" /> + <property name="basicAuthPassword" value="password" /> + <property name="basicAuthPasswordIsEncrypted" value="false" /> + <property name="basicAuthPasswordCryptoProvider" value="org.apache.juddi.v3.client.crypto.AES128Cryptor (an example)" />--> + </properties> + <!-- JAX-WS Transport --> + <proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport> + <custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer + </custodyTransferUrl> + <inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry</inquiryUrl> + <inquiryRESTUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiryRest/XML/getDetail + </inquiryRESTUrl> + <publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish</publishUrl> + <securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security</securityUrl> + <subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription</subscriptionUrl> + <subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener + </subscriptionListenerUrl> + <juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api</juddiApiUrl> + <replicationUrl>http://${serverName}:${serverPort}/juddiv3/services/replication</replicationUrl> + </node> + </nodes> + <clerks registerOnStartup="true"> + <!-- this is used for the subscription callback tests --> + <clerk name="uddiv3" node="uddiv3" publisher="uddiadmin" password="password" isPasswordEncrypted="false" cryptoProvider=""> + <class>org.apache.juddi.v3.client.config.model.JUDDI_943_testService</class> + </clerk> + </clerks> + </client> +</uddi> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
