Aplicação java local fornecendo um serviço Web, é possível?

Boa tarde.
Tenho uma aplicação web em java que fornece serviço web e dessa forma eu monitoro alguns dispositivos de IoT.
Agora preciso adaptar essa aplicação para ser executada em um Raspberry, porém quando o RPi abre o navegador para subir a aplicação ele consome quase toda a sua memória RAM e eu acredito que isso possa gerar problemas.
Pergunto: é possível fazer uma aplicação local (não web) e implementar um servidor para assim criar meu endpoint? Utilizando o netbeans eu não consegui inserir o web service, ele me dá apenas a opção de cliente de web service.

Com o Java 7 eu consegui isso utilizando a classe com.sun.net.httpserver.HttpServer.

Obrigado, vou ver o que consigo.

eu vi sobre classe com.sun.net.httpserver.HttpServer, mas eu preciso de um websocket.
Meu sistema troca strings JSON com dispositivos de Iot e eu resolvi isso com o websocket na aplicação web, já nessa aplicação, que precisa ser local eu estou com problemas. Alguém pode me ajudar?

MQTT não seria uma opção para você?

eu já tenho uma estrutura funcionando com websocket, se mudar a forma de comunicação perco a Interoperabilidade

Nao conheço mas veja se isso ajuda: http://www.eclipse.org/jetty/

Chegou a implementar um servidor local como exemplo?
Não te atendeu?

Você também pode utilizar a classe javax.xml.ws.Endpoint para publicar um objeto e acessar via RCP.

Boa tarde, criei um projeto básico mas me perdi aqui.
Você tem algum exemplo?
Obrigado

A interface de um serviço hipotético:

package pacote;

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

@WebService
@SOAPBinding(style = Style.RPC)
public interface InterfaceDoMeuServico {

    @WebMethod
    public Object fazAlgumaCoisa(Object... parametros);
}

A implementação desse serviço hipotético:

package pacote;

import javax.jws.WebService;

@WebService(endpointInterface = "pacote.InterfaceDoMeuServico")
public class ImplementacaoDoMeuServico implements InterfaceDoMeuServico {

    @Override
    public Object fazAlgumaCoisa(Object... parametros) {
        if ("somar".equals(parametros[0])) {
            int a = (int) parametros[1];
            int b = (int) parametros[2];
            return a + b;
        }
        return "Não foi possível tratar os parâmetros";
    }
}

A classe do servidor:

package pacote;

import javax.xml.ws.Endpoint;

public class Servidor {

    public static void main(String[] args) {
        InterfaceDoMeuServico servico = new ImplementacaoDoMeuServico();
        Endpoint.publish("http://127.0.0.1:5678/pacote", servico);
        System.out.println("Servidor no Ar");
    }
}

A classe cliente que vai consumir o serviço:

package pacote;

import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

public class Cliente {

    public static void main(String args[]) throws Exception {
        URL url = new URL("http://127.0.0.1:5678/pacote?wsdl");
        QName qname = new QName("http://pacote/", "ImplementacaoDoMeuServicoService");
        Service ws = Service.create(url, qname);
        InterfaceDoMeuServico servico = ws.getPort(InterfaceDoMeuServico.class);

        Object resultado = servico.fazAlgumaCoisa("somar", 1, 2);
        System.out.println("Resultado = " + resultado);

        resultado = servico.fazAlgumaCoisa("multiplicar", 3, 4);
        System.out.println("Resultado = " + resultado);
    }
}

Bom dia, eu não dei conta de fazer, não consegui por um websocket rodando, recebendo e enviando Json.
Acho que vou tentar fazer a aplicação web funcionar no raspberry.

Obrigado