LINUX.ORG.RU

Объясните в двух словах про Spring-ws

 , , ,


1

3

Читаю инфу (в том числе оф.сайт), примеров уйма, все различные. Хочу немного прояснить мозги.

Проект SpringMVC, Maven, XML-configured (не Spring-Boot ни разу).

Как правильно и адекватно настроить wsdl+xsd? Вроде пишут, что можно генерить на лету, не принципиально, но если просто, то тоже хорошо.

Если не на лету, то где прочитать (для бестолковых на пальцах), как эти wsdl+xsd составлять.

★★★★★

Как правильно и адекватно настроить wsdl+xsd? Вроде пишут, что можно генерить на лету, не принципиально, но если просто, то тоже хорошо.

WSDL описывает операции веб-сервиса,  XSD - данные, которые эти операции принимают/возвращают. Типы данных можно и в WSDL описывать в принципе, но если они достаточно сложные, то их нужно описывать в XSD. Вообще, spring-ws ориентирован на то, что ты сначала пишешь контракт (XSD и, возможно, WSDL), а потом реализацию. Spring-ws может тебе сгенерировать WSDL по XSD, а может и не генерировать, а опубликовать твой статический WSDL. Вот здесь всё описано (5.3.1.1. Automatic WSDL exposure): http://docs.spring.io/spring-ws/site/reference/html/server.html

Вообще ты уверен, что хочешь именно Document style model, на которую и заточен spring-ws? Там всё ручками нужно делать. А с RPC style model и JAX-WS можно, например, напустить на WSDL компилятор и он тебе сгенерирует соответсвующих джавовских типов. Или может в обратную сторону сгенерить корректный WSDL по имеющемуся java-коду. Spring-ws нужен если ты желаешь обмениваться сложными типами данных (например такими, какие JAXB не съест), причем, асинхронно.

asaw ★★★★★
()
Ответ на: комментарий от asaw

я пока не знаю, что мне нужно, потому что не знаю, как они толком работают :)

Пока нашел описание формата XSD, где все по полочкам и на русском: http://citforum.ru/internet/xml/scheme/

bvn13 ★★★★★
() автор топика

вот такой настройкой генерится java-код из xsd файла:

<build>
    <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <version>${jaxb2.version}</version>
                <executions>
                    <execution>
                        <id>xjc</id>
                        <goals>
                            <goal>xjc</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <sources>
                        <source>web/WEB-INF/wsdl/LicenseServerJ.xsd</source>
                    </sources>
                    <!-- The package of your generated sources -->
                    <packageName>ru.bvn13.licenseserverj.web.soap</packageName>
                    <schemaDirectory>${project.basedir}/src/main/resources/</schemaDirectory>
                    <outputDirectory>${project.basedir}/src/main/java</outputDirectory>
                    <clearOutputDir>false</clearOutputDir>
                </configuration>
            </plugin>
    </plugins>
</build>

вычитал здесь: http://www.mojohaus.org/jaxb2-maven-plugin/Documentation/v2.2/example_xjc_bas...

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от asaw

почему возникает ошибка?

[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building LicenseServerJ 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- cxf-java2ws-plugin:3.1.11:java2ws (default-cli) @ LicenseServerJ ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.815 s
[INFO] Finished at: 2017-06-19T12:36:53+03:00
[INFO] Final Memory: 10M/153M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.cxf:cxf-java2ws-plugin:3.1.11:java2ws (default-cli) on project LicenseServerJ: The parameters 'className' for goal org.apache.cxf:cxf-java2ws-plugin:3.1.11:java2ws are missing or invalid -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.cxf:cxf-java2ws-plugin:3.1.11:java2ws (default-cli) on project LicenseServerJ: The parameters 'className' for goal org.apache.cxf:cxf-java2ws-plugin:3.1.11:java2ws are missing or invalid
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
	at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
Caused by: org.apache.maven.plugin.PluginParameterException: The parameters 'className' for goal org.apache.cxf:cxf-java2ws-plugin:3.1.11:java2ws are missing or invalid
	at org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:641)
	at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:594)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:121)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
	... 21 more
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginParameterException

Process finished with exit code 1

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от asaw

сгенерировать wsdl хочу на основании java-ws

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от bvn13

Во-первых, ты готовишь плагин неправильно, судя по стектрейсу.
Во-вторых, xjc - это утилита для генерации JAXB классов на основе xsd, тебе же судя по твоим трбованиям нужно wsdl2java.
В-третьих, ты уверен, что тебе нужен spring-ws? Подумай хорошо. Посмотри уже в сторону Apache CXF, оно со спрингом также очень хорошо дружит. Сам spring-ws в отличие от него страшный как ядерная война (это только мое мнение, со спрингом я знаком давно и хорошо, но конкретно spring-ws и конкретно для меня выглядит не по-спринговому неудобно)

bytecode ★★
()
Последнее исправление: bytecode (всего исправлений: 1)
Ответ на: комментарий от bytecode

Да, ты прав. Я отказался от Spring-WS в сторону JAX-WS. Плагины настроил для генерации классов из xsd, и для генерации wsdl из @WebService-классов. Если кому надо - скину pom/

bvn13 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.