Hi,

I have created a jar with dependencies using the maven assembly plugin in
order to push data to secure web service in WSO2 DSS.

The code works fine when run in intelliJ idea, but when the jar is run I
get the following exception.

java.lang.RuntimeException: Undefined 'Security policy namespace cannot be
null.' resource property
at org.apache.rampart.RampartException.getMessage(RampartException.java:81)
at org.apache.rampart.RampartException.<init>(RampartException.java:41)
at org.apache.rampart.RampartException.<init>(RampartException.java:57)
at
org.apache.rampart.RampartMessageData.setWSSecurityVersions(RampartMessageData.java:422)
at org.apache.rampart.RampartMessageData.<init>(RampartMessageData.java:263)
at org.apache.rampart.MessageBuilder.build(MessageBuilder.java:61)
at org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:65)
at org.apache.axis2.engine.Phase.invokeHandler(Phase.java:340)
at org.apache.axis2.engine.Phase.invoke(Phase.java:313)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:262)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:427)
at
org.apache.axis2.description.OutOnlyAxisOperationClient.executeImpl(OutOnlyAxisOperation.java:278)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at
org.wso2.dashboard.marketing.client.WSO2MarketingDashboardDataServiceStub.insertWebsiteVisitorsPerWeek(WSO2MarketingDashboardDataServiceStub.java:610)
at
org.wso2.dashboard.marketing.publish.data.DataPublisher.insertToWebsiteVisitorsWeeklyDB(DataPublisher.java:358)
at
org.wso2.dashboard.marketing.publish.data.DataPublisher.publishData(DataPublisher.java:46)
at
org.wso2.dashboard.marketing.publish.data.Application.main(Application.java:8)

The pom is as follows.

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd";>
    <modelVersion>4.0.0</modelVersion>

    <properties>
        <JDK_VERSION>1.6</JDK_VERSION>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <axis2.version>1.6.1-wso2v9</axis2.version>
        <rampart.version>1.6.1-wso2v12</rampart.version>
    </properties>

    <groupId>org.wso2.dashboard.marketing</groupId>
    <artifactId>DataAccess</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <repositories>
        <repository>
            <id>codehaus</id>
            <url>http://repository.codehaus.org/org/codehaus</url>
        </repository>

        <repository>
            <id>wso2.releases</id>
            <name>WSO2 Releases Repository</name>
            
<url>http://maven.wso2.org/nexus/content/repositories/releases/</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
                <checksumPolicy>ignore</checksumPolicy>
            </releases>
        </repository>

        <!-- WSO2 Snapshot artifact repository -->
        <repository>
            <id>wso2.snapshots</id>
            <name>WSO2 Snapshot Repository</name>
            
<url>http://maven.wso2.org/nexus/content/repositories/snapshots/</url>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>

        <repository>
            <id>wso2-nexus</id>
            <name>WSO2 internal Repository</name>
            <url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
                <checksumPolicy>ignore</checksumPolicy>
            </releases>
        </repository>
    </repositories>

    <dependencies>
        <!--Google Analytics-->
        <dependency>
            <groupId>com.google.apis</groupId>
            <artifactId>google-api-services-analytics</artifactId>
            <version>v3-rev98-1.19.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.oauth-client</groupId>
            <artifactId>google-oauth-client-jetty</artifactId>
            <version>1.19.0</version>
        </dependency>

        <!--Sales Force-->
        <dependency>
            <groupId>com.force.api</groupId>
            <artifactId>force-wsc</artifactId>
            <version>33.0.1</version>
        </dependency>

        <!--Jackson for JSON-->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

        <dependency>
            <groupId>org.wso2.carbon</groupId>
            <artifactId>org.wso2.carbon.authenticator.stub</artifactId>
            <version>3.2.0</version>
        </dependency>

        <!--Axis2 Dependencies-->
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2</artifactId>
            <version>${axis2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-local</artifactId>
            <version>${axis2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-http</artifactId>
            <version>${axis2.version}</version>
        </dependency>

        <!-- Apache Rampart-->
        <dependency>
            <groupId>org.apache.rampart</groupId>
            <artifactId>rampart-core</artifactId>
            <version>${rampart.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.axis2</groupId>
                    <artifactId>addressing</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!--Rampart Dependencies-->
        <dependency>
            <groupId>org.apache.neethi</groupId>
            <artifactId>neethi</artifactId>
            <version>2.0.5</version>
        </dependency>

        <!--SalesForce-->
        <dependency>
            <groupId>org.wso2.dashboard.marketing</groupId>
            <artifactId>SalesforceEnterprise</artifactId>
            <version>1.0</version>
        </dependency>

        <!--Service Client-->
        <dependency>
            <groupId>org.wso2.dashboard.marketing</groupId>
            <artifactId>WebserviceClient</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>${JDK_VERSION}</source>
                    <target>${JDK_VERSION}</target>
                    <excludes>
                    </excludes>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>

<mainClass>org.wso2.dashboard.marketing.publish.data.Application</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>

The policy xml file is as follows.

<?xml version="1.0" encoding="UTF-8"?>
<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy";
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
wsu:Id="UTOverTransport">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:TransportBinding
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy";>
                <wsp:Policy>
                    <sp:TransportToken>
                        <wsp:Policy>
                            <sp:HttpsToken RequireClientCertificate="false"/>
                        </wsp:Policy>
                    </sp:TransportToken>
                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic256/>
                        </wsp:Policy>
                    </sp:AlgorithmSuite>
                    <sp:Layout>
                        <wsp:Policy>
                            <sp:Lax/>
                        </wsp:Policy>
                    </sp:Layout>
                    <sp:IncludeTimestamp/>
                </wsp:Policy>
            </sp:TransportBinding>
            <sp:SignedSupportingTokens
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy";>
                <wsp:Policy>
                    <sp:UsernameToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"/>
                </wsp:Policy>
            </sp:SignedSupportingTokens>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>

This is the code used to connect to the web service.

String epr = 
"https://10.224.144.179:9443/services/WSO2MarketingDashboardDataService";;
System.setProperty("javax.net.ssl.trustStore", (new
File("./wso2carbon.jks")).getAbsolutePath());
System.setProperty("javax.net.ssl.trustStorePassword", "wso2carbon");

ConfigurationContext ctx = ConfigurationContextFactory
      .createConfigurationContextFromFileSystem("/home/sabra/repository", null);
WSO2MarketingDashboardDataServiceStub stub = new
WSO2MarketingDashboardDataServiceStub(ctx,epr);
ServiceClient client = stub._getServiceClient();
Options options = client.getOptions();
client.engageModule("rampart");
options.setUserName("admin");
options.setPassword("admin");

options.setProperty(RampartMessageData.KEY_RAMPART_POLICY,
loadPolicy("./wso2MDPolicy.xml"));

where loadPolicy is as follows.

private static Policy loadPolicy(String path) throws Exception {
   InputStream resource = new FileInputStream(path);
   StAXOMBuilder builder = new StAXOMBuilder(resource);
   return PolicyEngine.getPolicy(builder.getDocumentElement());
}

Any help on resolving or understanding this issue is highly appreciated.

Thank you.
-- 
Sabra Ossen
*Software Engineering Intern*
Mobile : +94 (0) 775 837 356
sa...@wso2.com
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to