Исключение при использовании аннотации @SchemaValidation на конечной точке JAX-WS в Weblogic - PullRequest
0 голосов
/ 07 октября 2010

Я пытаюсь настроить проверку схемы для веб-службы JAX-WS, развернутой в Weblogic 10.3.3.

Согласно документации, это должно быть так же просто, как добавить аннотацию "@SchemaValidation" для класса конечной точки. Однако, когда я пытаюсь это сделать, при развертывании приложения выдается следующее исключение:

Caused by: javax.xml.ws.WebServiceException: 
Annotation@com.sun.xml.internal.ws.developer.SchemaValidation 
(handler=class com.sun.xml.internal.ws.server.DraconianValidationErrorHandler)
is not recognizable, 
atleast one constructor of class com.sun.xml.internal.ws.developer.SchemaValidationFeature 
should be marked with @FeatureConstructor
at com.sun.xml.ws.binding.WebServiceFeatureList.getWebServiceFeatureBean(WebServiceFeatureList.java:169)
at com.sun.xml.ws.binding.WebServiceFeatureList.parseAnnotations(WebServiceFeatureList.java:141)

В сообщении об ошибке сообщается, что в com.sun.xml.internal.ws.developer.SchemaValidationFeature нет конструктора, аннотированного @FeatureConstructor. Когда я смотрю на этот класс, у него наверняка есть один:

  @com.sun.xml.internal.ws.api.FeatureConstructor(value={"handler"})
  public SchemaValidationFeature(java.lang.Class arg0);

Я гуглил вокруг, но не могу найти ссылку на это больше, чем этот парень несчастная душа, которая не получила никаких ответов. Было бы здорово, если бы кто-то мог указать мне правильное направление, потому что в этот момент я застрял.

Ответы [ 2 ]

1 голос
/ 08 августа 2012

SchemaValidation аннотация работает, но убедитесь, что вы импортируете правильный класс.

com.sun.xml.ws.developer.SchemaValidation

вместо

com.sun.xml.internal.ws.developer.SchemaValidation

Второй класс по умолчанию связан с JDK. Первый (используемый weblogic) взят из glassfish.jaxws.rt_XXX.jar, поэтому вам может понадобиться явно добавить этот jar-файл в classpath.

0 голосов
/ 14 октября 2010

Я недавно столкнулся с той же проблемой.

Чтобы преодолеть это, я добавил тег

<validation-request>true</validation-request>

в файл weblogic-webservices.xml

Это включило проверку SOAP-запроса на сервере приложений.

XML-структура файла weblogic-webservices.xml

Примечание. Мне не удалось успешно использовать тег @SchemaValidation, но описанный выше способ работает должным образом.

...