Vamos separar um pouco as coisas só pra ver se eu entendi direito o que vc quer fazer. 
Trabalhar com porta serial em java não achei ruim, funcionou bem para mim e existe uma api chamada javacomm que funciona. Com isso vc resolve a conversa com LPT + COMM e sem JNI(acessar dlls).
Impressoras fiscais, PDV, etc… Se existem dlls em C ou qualquer outra linguagem, aconselho vc a snifar a comunicação da DLL com a impressora e reproduzir isso em puro java com javacomm, retira a dependência do SO e ainda vc tem mais controle sobre os comandos, pois são poucos mesmo, acho que não chegam a 50 se me lembro bem.
Palms, Handhelds e demais, aconselho vc utilizar bluetooth que é o que o pessoal tem utilizado, tem APIs J2ME que fazem isso, ou em C# também tem algo que fala bluetooth para palm, e o “servidor” do bluetooth pode ser em java, ele vai ouvir um socket, e também tem API pronta pra isso.
Agora vc quer ter um servidor(JBoss + EJB), onde vc manda os comandos para esse servidor e ele reproduz isso nessas diversas interfaces que citei acima ? É esse o intuito do servidor ?
Se é isso, então vc não precisa de EJB, nem nada disso, vc tem que ter é um servidor Socket que fica escutando essas interfaces que estariam ligados ao computador, ou à alguma interface que um computador tenha acesso. E se por acaso vc queira ter algum serviço de monitoramento, aí vc pode até ter um “tomcatzinho” rodando pra vc colocar sua aplicação web, SEPARADA do servidor de suas interfaces/periféricos onde vc cria maneiras de consultar o status através de http, tcp, ou qualquer maneira que fique fácil da aplicação tomcat falar com a de periféricos.
Agora se eu não entendi nada do que vc disse, e escrevi um monte de besteira me avisa ae ! 