Невозможно получить доступ к объявить сгенерированный документ из развернутой войны в браузере

Я использую enunciate для создания моей документации по api для отдыха, изначально она работала нормально, если я не добавил в свой проект зависимость Spring.
Мой текущий pom:

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.2.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.2.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>3.2.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>3.2.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-rest-webmvc</artifactId>
        <version>2.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j</artifactId>
        <version>3.0.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j-rest</artifactId>
        <version>3.0.1.RELEASE</version>
    </dependency>  
            <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.0.0.GA</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.18.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-servlet</artifactId>
        <version>1.18.1</version>
    </dependency>  
    <dependency>
        <groupId>org.codehaus.enunciate</groupId>
        <artifactId>enunciate-rt</artifactId>
        <version>1.26</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <webResources>
                    <resource>
                        <directory>src/main/webapp</directory>
                        <filtering>true</filtering>
                        <includes>
                            <include>index.html</include>
                        </includes>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.enunciate</groupId>
            <artifactId>maven-enunciate-plugin</artifactId>
            <version>1.26</version>
            <configuration>
                <configFile>src/main/resources/enunciate.xml</configFile>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>assemble</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.codehaus.enunciate</groupId>
                                    <artifactId>maven-enunciate-plugin</artifactId>
                                    <versionRange>[1.26,)</versionRange>
                                    <goals>
                                        <goal>assemble</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>  

Приведенная выше конфигурация генерирует документы в каталоге api под созданной войной. У меня следующая конфигурация enunciate.xml:

<enunciate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://enunciate.codehaus.org/schemas/enunciate-1.26.xsd">
<webapp mergeWebXML="../webapp/WEB-INF/web.xml"></webapp>
<modules>
    <docs splashPackage="com.pack.resources" docsDir="api" title="My API" copyright="amg" includeDefaultDownloads="true" />
    <jersey useSubcontext="true" />
</modules>

документы создаются правильно, но когда я пытаюсь нажать http://localhost:8080/amg-web/api/index.html, он дает ответ 404.! Я проверил извлеченную войну в tomcat webapp, где каталог api успешно сгенерирован со всеми необходимыми файлами, но все еще не может получить к нему доступ из развернутого приложения в браузере. пожалуйста помоги.


person agpt    schedule 29.04.2014    source источник


Ответы (1)


Думаю, я нашел решение. Это может быть связано либо со старой версией enunciate, которую я использую, то есть v1.26, либо в моем web.xml есть несколько <url-pattern>.
Я добавил еще servlet mapping, и это сработало ..

    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>  

где /api/ - это путь к моей документации по API. Я так и не понял, зачем это нужно. Было бы здорово, если бы кто-нибудь мне это объяснил.

person agpt    schedule 29.04.2014