Создание простого веб-сервиса JAX-WS в Eclipse - PullRequest
4 голосов
/ 26 февраля 2012

Я пытаюсь создать простой веб-сервис в Eclipse. Сначала я создал пустой проект Java и добавил три следующих файла в папку src

  1. Greeting.java
package com.alfaisaliah;

import javax.jws.WebService;
import javax.jws.WebMethod;

@WebService
public interface Greeting {
    @WebMethod
    String sayHello(String name);
}
  1. GreetingImp.java
package com.alfaisaliah;

import javax.jws.WebService;

@WebService(endpointInterface="com.alfaisaliah.Greeting")
public class GreetingImp implements Greeting {

    @Override
    public String sayHello(String name) {
        return "Hello " + name;
    }
}
  1. WSPublisher
package com.alfaisaliah;

import javax.xml.ws.Endpoint;

public class WSPublisher {
    public static void main(String[] args){
        Endpoint.publish("http://localhost:8081/WS/Greeting", new GreetingImp());
    }
}

В учебнике, которому я следую, не указан сервер для запуска веб-службы! Мне интересно, если мне нужно указать какой-либо сервер. У меня уже есть Tomcat v5.5, но я не использую его в этом примере. Всякий раз, когда я запускаю этот проект как проект Java, я получаю какую-то ошибку. Может кто-нибудь, пожалуйста, помогите мне определить, где моя проблема пытается запустить веб-сервис. Вот вывод консоли eclipse

Feb 26, 2012 12:01:00 PM com.sun.xml.internal.ws.model.RuntimeModeler getRequestWrapperClass
INFO: Dynamically creating request wrapper Class com.alfaisaliah.jaxws.SayHello

Feb 26, 2012 12:01:00 PM com.sun.xml.internal.ws.model.RuntimeModeler getResponseWrapperClass
INFO: Dynamically creating response wrapper bean Class com.alfaisaliah.jaxws.SayHelloResponse

Также, когда я снова запускаю проект, он говорит, что адрес уже используется

Feb 26, 2012 12:01:00 PM com.sun.xml.internal.ws.model.RuntimeModeler getRequestWrapperClass
INFO: Dynamically creating request wrapper Class com.alfaisaliah.jaxws.SayHello

Feb 26, 2012 12:01:00 PM com.sun.xml.internal.ws.model.RuntimeModeler getResponseWrapperClass
INFO: Dynamically creating response wrapper bean Class com.alfaisaliah.jaxws.SayHelloResponse
Exception in thread "main" com.sun.xml.internal.ws.server.ServerRtException: Server Runtime Error: java.net.BindException: Address already in use

Буду признателен за помощь, ребята:)

Ответы [ 2 ]

4 голосов
/ 26 февраля 2012

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

Вам не нужен сервер с этим кодом.
Ваш main в:

Endpoint.publish("http://localhost:8081/WS/Greeting", new GreetingImp());  

запускает легкий http-сервер (доступен после JKD 1.6) и развертывает ваш веб-сервис, обрабатывающий весь входящий / исходящий трафик.

Проблема в том, что вы пропустили шаг:
Вы должны сгенерировать необходимые артефакты, используя инструмент wsgen (доступен в Java).

Проверьте здесь: Учебник по JAX WS для
wsgen -d build -s build -classpath build helloservice.endpoint.Hello
и прочитайте о wsgen.

Если честно, я не помню, как вы это делаете с помощью Eclipse (на самом деле я не уверен, может ли это работать в Eclipse автоматически без , вам нужно запустить wsgen самостоятельно) но вы можете запустить его вручную и просто скопировать сгенерированные артефакты в свой проект.

Что касается

Ошибка выполнения сервера: java.net.BindException: адрес уже используется

Это говорит само за себя: просто используйте другой порт. 8081 уже используется.

2 голосов
/ 26 апреля 2012

проверить эту ссылку,

http://www.myeclipseide.com/documentation/quickstarts/webservices_jaxws/

Приведенная выше ссылка содержит пошаговые сведения для создания как сервера веб-службы, так и клиента.

Вы начинаете с POJO, аннотации не требуются, среда выполнения JAX-WS позаботится после развертывания на сервере Tomcat.

...