You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Pieter @ DHL (JIRA)" <ji...@apache.org> on 2017/03/09 15:42:38 UTC

[jira] [Created] (AXIS2-5841) module archive name error when loading repository from url

Pieter @ DHL created AXIS2-5841:
-----------------------------------

             Summary: module archive name error when loading repository from url
                 Key: AXIS2-5841
                 URL: https://issues.apache.org/jira/browse/AXIS2-5841
             Project: Axis2
          Issue Type: Bug
          Components: deployment
    Affects Versions: 1.7.4
            Reporter: Pieter @ DHL
            Priority: Minor


Hi,

I'm trying to deploy an axis 2 webservice on an embedded jetty
server using spring boot (1.5.1), but axis can't deploy any of the modules
when I start the application.

I bootstrap the axis servlet with spring boot as follows:
{code}
@Bean
    public ServletRegistrationBean axisServletRegistration() {
        // in order for the axis servlet to work as expected we need to tweak the default axis settings (axis.xml)
        // axis assumes that the axis servlet is mapped to "/*" in the "axis2" context of the container
        // but in this case the axis servlet is mapped to "/axis2/*" in the root context of the container
        //  contextRoot -> /                (instead of axis2)
        //  servicePath -> axis2/services   (instead of services)
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new AxisServlet(), "/axis2/*");
        servletRegistrationBean.setName("AxisServlet");
        servletRegistrationBean.setOrder(1);
        servletRegistrationBean.setLoadOnStartup(1);
        servletRegistrationBean.getInitParameters().put(PARAM_AXIS2_XML_URL, Resources.getResource("axis2/conf/axis2.xml").toString());
        servletRegistrationBean.getInitParameters().put(PARAM_AXIS2_REPOSITORY_URL, Resources.getResource("axis2/").toString());
        return servletRegistrationBean;
    }
{code}

The axis2 folder on my classpath looks like this:
* axis2
** conf
*** axis2.xml
** modules
*** addressing-1.7.4.mar
*** axis2-jaxws-mar-1.7.4.mar
*** mex-1.7.4.mar
*** modules.list
*** mtompolicy-1.7.4.mar
*** ping-1.7.4.mar
*** scripting-1.7.4.mar
*** soapmonitor-1.7.4.mar*services
*** services.list
*** version-1.7.4.aar

When I start the application I get the following exception:
{code}
ERROR 2017-03-09 16:32:40,259 [main] o.a.axis2.deployment.ModuleDeployer: The mtompolicy-1.7.4.mar module, which is not valid, caused For input string: "mar"
java.lang.NumberFormatException: For input string: "mar"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.parseInt(Integer.java:615)
	at org.apache.axis2.description.Version.<init>(Version.java:78)
	at org.apache.axis2.description.AxisModule.setArchiveName(AxisModule.java:171)
	at org.apache.axis2.deployment.ModuleDeployer.deoloyFromUrl(ModuleDeployer.java:207)
	at org.apache.axis2.deployment.ModuleDeployer.deploy(ModuleDeployer.java:120)
	at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:149)
	at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:585)
	at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:164)
	at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377)
	at org.apache.axis2.deployment.DeploymentEngine.loadRepositoryFromURL(DeploymentEngine.java:303)
	at org.apache.axis2.deployment.WarBasedAxisConfigurator.getAxisConfiguration(WarBasedAxisConfigurator.java:212)
	at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64)
	at org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:620)
	at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:471)
	at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:637)
	at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:421)
	at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:744)
	at org.springframework.boot.context.embedded.jetty.JettyEmbeddedWebAppContext$JettyEmbeddedServletHandler.deferredInitialize(JettyEmbeddedWebAppContext.java:46)
	at org.springframework.boot.context.embedded.jetty.JettyEmbeddedWebAppContext.deferredInitialize(JettyEmbeddedWebAppContext.java:36)
	at org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer.handleDeferredInitialize(JettyEmbeddedServletContainer.java:194)
	at org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer.start(JettyEmbeddedServletContainer.java:127)
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:297)
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:145)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545)
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151)
{code}

The problem only occurs when I try to load the axis repository from a url;
when I initialize the axis2 servlet using axis2.repository.path instead of
axis2.repository.url everything works as expected. Unfortunately this
doesn't meet my requirements as I need to package the application as a fat
jar, so I need to load the repository from a URL.

I've inspected the code a bit and I think the issue is easy to fix:

IN
{{org.apache.axis2.deployment.ModuleDeployer.deoloyFromUrl(DeploymentFileData deploymentFileData)}}
CHANGE
{{module.setArchiveName(deploymentFileData.getName());}}
TO 
{{module.setArchiveName(DescriptionBuilder.getShortFileName(deploymentFileData}}
.getName()));

Can someone confirm that this is a bug or am I missing something? 




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org