Веб-сервис Java без сервера веб-приложений

У нас есть сервер обработки сообщений, который

начать несколько потоковобработка сообщениявзаимодействовать с базой данных и т.д .....

Теперь клиент хочет иметьсервер веб-службы на сервере они смогут запрашивать сервер обработки сообщений с помощью клиента веб-службы. например дай мне все сообщения на сегодня или удали сообщение с идентификатором ....

проблема в следующем:

Сервер просто стандартное приложение j2se, не запускается внутри сервера приложений, как tomcat или glassfish.Для обработки запроса Http, мне нужно реализовать http-сервер?Я хотел бы использовать хорошую аннотацию j2ee, такую как @webservice, @webmothod и т. Д. ... есть ли какая-либо библиотека или фреймворк, которые я могу использовать
 zaffargachal12 окт. 2012 г., 16:02
Неужели у вас нет другого решения, кроме веб-службы, например RMI, если клиентский клиент написан на JAVA?
 Junchen Liu12 окт. 2012 г., 15:59
@zaffargachal Это не было таким дизайном, я думаю, что после 10 да работы мы говорим им, что сервер должен перейти в штуку под названием glassfish. они сойдут с ума.
 zaffargachal12 окт. 2012 г., 15:56
Почему вы не можете развернуть приложение веб-службы на любом контейнере, таком как tomcat или glassfish? и вы можете написать его клиент в любое приложение j2se. Есть ли какие-либо ограничения от клиента?

Ответы на вопрос(2)

Решение Вопроса

JAX-WS аннотаций. J2SE поставляется сJAX-WSТаким образом, все аннотации по-прежнему доступны для вас. Вы можете добиться легких результатов с помощью следующего решения, но для всего, что оптимизировано / многопоточно, вам нужно реализовать это самостоятельно:

Разработка интерфейса конечной точки службы SEI, который в основном представляет собой интерфейс Java с аннотациями веб-служб. Это не обязательно, это просто точка хорошего дизайна от базового ООП.

import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

@WebService
@SOAPBinding(style = Style.RPC) //this annotation stipulates the style of your ws, document or rpc based. rpc is more straightforward and simpler. And old.
public interface MyService{
@WebMethod String getString();

}

Реализуйте SEI в классе Java, который называется компонентом реализации службы SIB.

@WebService(endpointInterface = "com.yours.wsinterface") //this binds the SEI to the SIB
public class MyServiceImpl implements MyService {
public String getResult() { return "result"; }
 }

Выставьте сервис, используяEndpoint import javax.xml.ws.Endpoint;

public class MyServiceEndpoint{

public static void main(String[] params){
  Endpoint endPoint =  EndPoint.create(new MyServiceImpl());
  endPoint.publish("http://localhost:9001/myService"); //supply your desired url to the publish method to actually expose the service.
   }
}

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

 kolossus12 мая 2014 г., 13:32
@Duncan - правильное значение будет FQN для интерфейса Java, который аннотирован@WebService (в этом примереMyService). в этом случае правильное значение будетcom.foo.MyServiceпотому что вот чтоMyServiceImpl реализует.
 Junchen Liu16 окт. 2012 г., 11:02
Обратите внимание, что ответом выше является псевдокод, концепция верна, но код может не работать. Вот очень простой, но эффективный учебник, и код определенно работает.mkyong.com/webservices/jax-ws/jax-ws-hello-world-example
 Duncan Jones12 мая 2014 г., 12:29
Как определить правильное значение для использования"com.yours.wsinterface"?
 Junchen Liu16 окт. 2012 г., 11:14
также, когда ваше приложение завершает работу, вы должны корректно остановить веб-сервис. в противном случае у вас будет проблема, чтобы начать снова. как порт уже привязать?

Ваш ответ на вопрос