diff --git a/modules/tool/axis2-wsdl2code-maven-plugin/src/it/test3/pom.xml b/modules/tool/axis2-wsdl2code-maven-plugin/src/it/test3/pom.xml
new file mode 100644
index 0000000..753acb7
--- /dev/null
+++ b/modules/tool/axis2-wsdl2code-maven-plugin/src/it/test3/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you 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.
+  -->
+
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>@pom.groupId@</groupId>
+        <artifactId>axis2</artifactId>
+        <version>@pom.version@</version>
+    </parent>
+    <artifactId>axis2-wsdl2code-maven-plugin-test1</artifactId>
+    <name>Test 3 of the axis2-wsdl2code-maven-plugin to test
+        custom skeletonInterfaceName and skeletonClassName</name>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>@pom.groupId@</groupId>
+                <artifactId>axis2-wsdl2code-maven-plugin</artifactId>
+                <version>@pom.version@</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>wsdl2code</goal>
+                        </goals>
+                        <configuration>
+                            <wsdlFile>src/main/axis2/service.wsdl</wsdlFile>
+                            <syncMode>both</syncMode>
+                            <generateServerSide>true</generateServerSide>
+                            <generateServerSideInterface>true</generateServerSideInterface>
+                            <generateAllClasses>true</generateAllClasses>
+                            <generateServicesXml>true</generateServicesXml>
+                            <skeletonInterfaceName>Interface</skeletonInterfaceName>
+                            <skeletonClassName>GeneratedStub</skeletonClassName>
+                            <packageName>demo3</packageName>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/modules/tool/axis2-wsdl2code-maven-plugin/src/it/test3/src/main/axis2/test dir/service.wsdl b/modules/tool/axis2-wsdl2code-maven-plugin/src/it/test3/src/main/axis2/test dir/service.wsdl
new file mode 100644
index 0000000..9eec86d
--- /dev/null
+++ b/modules/tool/axis2-wsdl2code-maven-plugin/src/it/test3/src/main/axis2/test dir/service.wsdl
@@ -0,0 +1,106 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you 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.
+  -->
+
+<wsdl:definitions
+    xmlns:axis2="http://ws.apache.org/axis2"
+    xmlns:ns1="http://org.apache.axis2/xsd"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+    xmlns:ns="http://axisversion.sample/xsd"
+    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
+    targetNamespace="http://ws.apache.org/axis2">
+  <wsdl:documentation>
+    xDWS service example
+  </wsdl:documentation>
+    <wsdl:types>
+        <xs:schema>
+            <xs:import
+                    namespace="http://axisversion.sample/xsd"
+                    schemaLocation="service.xsd"/>
+        </xs:schema>
+    </wsdl:types>
+  <wsdl:message name="commandsMessage">
+    <wsdl:part name="part1" element="ns:commands"/>
+  </wsdl:message>
+  <wsdl:message name="commandsResponse">
+    <wsdl:part name="part1" element="ns:commandsResponse"/>
+  </wsdl:message>
+  <wsdl:portType name="axis2-test-0.0.1PortType">
+    <wsdl:operation name="commands">
+      <wsdl:input
+          xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
+          message="axis2:commandsMessage"
+          wsaw:Action="urn:commands"/>
+      <wsdl:output
+          xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
+          message="axis2:commandsResponse"
+          wsaw:Action="http://ws.apache.org/axis2/xDWSPortType/commandsResponse"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="axis2-test-0.0.1SOAP11Binding" type="axis2:axis2-test-0.0.1PortType">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+    <wsdl:operation name="commands">
+      <soap:operation soapAction="urn:commands" style="document"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="axis2-test-0.0.1SOAP12Binding" type="axis2:axis2-test-0.0.1PortType">
+    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+    <wsdl:operation name="commands">
+      <soap12:operation soapAction="urn:commands" style="document"/>
+      <wsdl:input>
+        <soap12:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="axis2-test-0.0.1HttpBinding" type="axis2:axis2-test-0.0.1PortType">
+    <http:binding verb="POST"/>
+    <wsdl:operation name="commands">
+      <http:operation location="commands"/>
+      <wsdl:input>
+        <mime:content type="text/xml"/>
+      </wsdl:input>
+      <wsdl:output>
+        <mime:content type="text/xml"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="axis2-test-0.0.1">
+    <wsdl:port name="axis2-test-0.0.1SOAP11port_http" binding="axis2:axis2-test-0.0.1SOAP11Binding">
+      <soap:address location="http://192.168.136.3:8080/axis2-webapp/services/axis2-test-0.0.1"/>
+    </wsdl:port>
+    <wsdl:port name="axis2-test-0.0.1SOAP12port_http" binding="axis2:axis2-test-0.0.1SOAP12Binding">
+      <soap12:address location="http://192.168.136.3:8080/axis2-webapp/services/axis2-test-0.0.1"/>
+    </wsdl:port>
+    <wsdl:port name="axis2-test-0.0.1Httpport0" binding="axis2:axis2-test-0.0.1HttpBinding">
+      <http:address location="http://192.168.136.3:8080/axis2-webapp/rest/axis2-test-0.0.1"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
diff --git a/modules/tool/axis2-wsdl2code-maven-plugin/src/it/test3/src/main/axis2/test dir/service.xsd b/modules/tool/axis2-wsdl2code-maven-plugin/src/it/test3/src/main/axis2/test dir/service.xsd
new file mode 100644
index 0000000..6a2bf0c
--- /dev/null
+++ b/modules/tool/axis2-wsdl2code-maven-plugin/src/it/test3/src/main/axis2/test dir/service.xsd
@@ -0,0 +1,31 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you 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.
+  -->
+
+<xs:schema
+        xmlns:xs="http://www.w3.org/2001/XMLSchema"
+        attributeFormDefault="unqualified"
+        elementFormDefault="qualified"
+        targetNamespace="http://axisversion.sample/xsd">
+    <xs:element name="commands">
+        <xs:complexType/>
+    </xs:element>
+    <xs:element name="commandsResponse">
+        <xs:complexType/>
+    </xs:element>
+</xs:schema>
\ No newline at end of file
diff --git a/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/AbstractWSDL2CodeMojo.java b/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/AbstractWSDL2CodeMojo.java
index b83df49..4b09252 100644
--- a/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/AbstractWSDL2CodeMojo.java
+++ b/modules/tool/axis2-wsdl2code-maven-plugin/src/main/java/org/apache/axis2/maven2/wsdl2code/AbstractWSDL2CodeMojo.java
@@ -265,6 +265,25 @@
      * @parameter default-value="${project.build.sourceEncoding}"
      */
     private String encoding;
+
+    /**
+     * Skeleton interface name - used to specify a name for skeleton interface other than the default one.
+     * In general, you should use the {@code serviceName} parameter or ensure only one service exist.
+     * Should be used together with {@code generateServerSideInterface}.
+     * Maps to the -sin option of the command line tool.
+     *
+     * @parameter property="axis2.wsdl2code.skeletonInterfaceName"
+     */
+    private String skeletonInterfaceName;
+
+    /**
+     * Skeleton class name - used to specify a name for skeleton class other than the default one.
+     * In general, you should use the {@code serviceName} parameter or ensure only one service exist.
+     * Maps to the -scn option of the command line tool.
+     *
+     * @parameter property="axis2.wsdl2code.skeletonClassName"
+     */
+    private String skeletonClassName;
     
     private CodeGenConfiguration buildConfiguration() throws CodeGenerationException, MojoFailureException {
         CodeGenConfiguration config = new CodeGenConfiguration();
@@ -334,7 +353,9 @@
         config.setPortName(portName);
         config.setUri2PackageNameMap(getNamespaceToPackagesMap());
         config.setOutputEncoding(encoding);
-        
+        config.setSkeltonInterfaceName(skeletonInterfaceName);
+        config.setSkeltonClassName(skeletonClassName);
+
         config.loadWsdl(wsdlFile);
         
         return config;
