WSIT, Знаток и wsimport — Они могут Сотрудничать?

Я работаю над небольшим проектом мультимодуля в Знатоке. Мы разделили UI от слоя базы данных с помощью веб-сервисов, и благодаря jaxws-maven-plugin, создание WSDL и клиента WS более или менее обрабатывается для нас. (Плагин является по существу оберткой вокруг wsgen и wsimport.) Пока неплохо.

Проблема возникает, когда я пробую к безопасности уровня WSIT в изображение. NetBeans позволяет мне генерировать метаданные безопасности легко, но wsimport кажется абсолютно неспособным к контакту с чем-либо вне Основного подлинного уровня безопасности.

Вот наш текущий, небезопасный способ назвать wsimport во время сборки Знатока:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>1.10</version>
    <executions>
        <execution>
            <goals>
                <goal>wsimport</goal>
            </goals>
            <configuration>
                <wsdlUrls>
                    <wsdlUrl>${basedir}/../WebService/target/jaxws/wsgen/wsdl/WebService.wsdl</wsdlUrl>
                </wsdlUrls>
                <packageName>com.yourcompany.appname.ws.client</packageName>
                <sourceDestDir>${basedir}/src/main/java</sourceDestDir>
                <destDir>${basedir}/target/jaxws</destDir>
            </configuration>
        </execution>
    </executions>
</plugin>

Я попытался играть вокруг с xauthFile, xadditionalHeaders, передав javax.xml.ws.security.auth.username и паролем через args. Я также попытался использовать wsimport из командной строки для указания на сгенерированный Tomcat WSDL, который имеет дополнительную информацию о безопасности. Ничто, однако, кажется, не изменяет состав wsimport-сгенерированных файлов вообще.

Таким образом, я предполагаю, что мой вопрос вот, для получения WSIT-совместимого клиента, застревают я отказывающийся от Знатока и jaxws плагина в целом? Существует ли способ заставить клиент WSIT автоматически генерировать? Или я должен буду генерировать клиент вручную?

Сообщите мне, нужна ли Вам какая-либо дополнительная информация вне того, что я записал здесь. Я развертываюсь к Tomcat, хотя это, кажется, не проблема, как Знаток кажется счастливым вытянуть Метро в развернутый ВОЕННЫЙ файл.

Заранее спасибо!

Править: После большого проигрывания вокруг с WSIT, вот то, что работало на меня.

Для начала, используйте Netbeans для генерации клиента WSIT. Протестируйте его, чтобы удостовериться, что это работает, и затем переместите конфигурационные файлы WSIT (wsit-client.xml и [Ваше имя веб-сервиса] .xml) к каталогу META-INF клиентского проекта WS.

Соответствующее дополнение к Вашему проекту, с точки зрения безопасности, является тегом в веб-сервисе xml:

<wsp:Policy wsu:Id="WebPortBindingPolicy">
    <wsp:ExactlyOne>
        <wsp:All>
            <sc:CallbackHandlerConfiguration wspp:visibility="private">
                <sc:CallbackHandler default="wsitUser" name="usernameHandler"/>
                <sc:CallbackHandler default="changeit" name="passwordHandler"/>
            </sc:CallbackHandlerConfiguration>
            <sc:TrustStore wspp:visibility="private" location="C:\Apps\apache-tomcat-6.0.24\certs\client-truststore.jks" type="JKS" storepass="changeit" peeralias="xws-security-server"/>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>

Очевидно, существуют некоторые трудно кодированные зависимости в здесь, что мы должны будем справиться во время нашей сборки. Пользователь, пароль, местоположение базы доверенных сертификатов и peeralias являются всеми значениями по умолчанию разработки и изменятся, когда система перемещается от dev в тестирование и производство. Мы играем вокруг с несколькими различными стратегиями управления этим, но мы, вероятно, закончим тем, что установили переменные среды в Гудзоне для сборки к каждой среде.

Скрипка с конфигурацией jaxws плагина Знатока немного. Мы генерируем WSDL как часть сборки, таким образом, мы не должны ссылаться на него локально. Вот сменный тег для команды wsimport в нашей клиентской цели WS:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>1.12</version>
    <executions>
        <execution>
            <goals>
                <goal>wsimport</goal>
            </goals>
            <configuration>
                <wsdlUrls>
                    <wsdlUrl>${basedir}/../WebService/target/jaxws/wsgen/wsdl/WebService.wsdl</wsdlUrl>
                </wsdlUrls>
                <staleFile>${project.build.directory}/jaxws/stale/WebService.stale</staleFile>
                <packageName>com.yourcompany.appname.ws.client</packageName>
                <sourceDestDir>${basedir}/src/main/java</sourceDestDir>
                <destDir>${basedir}/target/jaxws</destDir>
            </configuration>
            <id>wsimport-generate-WebService</id>
            <phase>generate-sources</phase>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>javax.xml</groupId>
            <artifactId>webservices-api</artifactId>
            <version>2.0-b30</version>
        </dependency>
    </dependencies>
    <configuration>
        <sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir>
        <xnocompile>true</xnocompile>
        <verbose>true</verbose>
        <extension>true</extension>
    </configuration>
</plugin>

И наконец, конечно, удостоверяются, что все Ваши проекты, которые должны будут назвать веб-сервисы, имеют зависимость от Метро, правильно настроенную.

6
задан Jon Seigel 16 May 2010 в 02:13
поделиться

1 ответ

Разве вы не должны просто предоставить клиентские файлы конфигурации WSIT для клиента? Чего именно вы ожидаете от wsimport ?

Изменить: Как подразумевается, документ WSIT описывает два файла конфигурации на стороне клиента: wsit-client.xml и {имя файла wsdl} .xml и:

При запуске клиента эти файлы должны находиться в пути к классам, либо в корне пути к классам (т.е. сборка / классы), либо в каталоге META-INF в корне пути к классам.

При переносе в проект Maven естественным расположением этих файлов будет папка src / main / resources или src / main / resources / META-INF . Лично я предпочитаю помещать их в META-INF.

2
ответ дан 17 December 2019 в 20:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: