Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JAVA] Is het mogelijk om je poort op te vragen?

Pagina: 1
Acties:
  • 257 views sinds 30-01-2008
  • Reageer

  • Creatinus
  • Registratie: September 2004
  • Laatst online: 13-02 20:36
Kan je in JAVA de poort opvragen waarop de instantie draait? Ik heb java code (bijv. in een webservice) draaien, en hiervan wil ik graag de poort weten, kan dit?

Tot nu toe heb ik alleen de host kunnen vinden mbv de static methode getHost van de classe java.net.InetAddress

Ik heb me rot gezocht maar tenzij er geen andere manier is om de URL/Host te krijgen zie ik niet snel een manier om ook de poort te krijgen...

Iemand al eens met dit bijltje gehakt?

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
request.getServerPort()?

  • Creatinus
  • Registratie: September 2004
  • Laatst online: 13-02 20:36
Helaas, het gaat hier niet om een servlet, maar om een bean....

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Een bean heeft inderdaad niet automatisch toegang tot de ServletContext. Dit betekent dat jij ervoor zal moeten zorgen dat vanuit de servlet de bean wordt voorzien van die informatie.
Door bijvoorbeeld een property servletContext aan te maken en die in de servlet/jsp vullen.

Verwijderd

is het dan niet netter om een property portNumber aan te maken en die te vullen?

  • momania
  • Registratie: Mei 2000
  • Laatst online: 19:29

momania

iPhone 30! Bam!

Het eerst wat ik me afvraag is: waarom wil je het portnummer weten? Ik ruik bijna een design 'vergissing' nml. :)

Neem je whisky mee, is het te weinig... *zucht*


Verwijderd

Creatinus schreef op woensdag 21 februari 2007 @ 13:48:
Helaas, het gaat hier niet om een servlet, maar om een bean....
sinds wanneer is een servlet geen bean ;)

Maar ik zou zeggen, geef eens wat informatie over wat je wil bereiken.

  • flowerp
  • Registratie: September 2003
  • Laatst online: 11-09 18:20
bigbeng schreef op woensdag 21 februari 2007 @ 14:13:
Een bean heeft inderdaad niet automatisch toegang tot de ServletContext.
De openings post is natuurlijk extreem vaag, het is absoluut niet duidelijk welke context we nu precies over praten. Maar goed, tegenwoordig heb je in je web layer wel degelijk altijd toegang tot de servletContext, dat is tenminste als je de huidige view technology gebruikt (JSF). Gebruik je nog ouderwetse 'puur' JSP pagina's, dan heeft een bean aangeroepen vanaf een dergelijke pagina geen automatisch toegang hiertoe, maar zal de ServletContext doorgegeven moeten worden (wat vaak ook weer een slecht design is btw).

In de Java EE 5 weblayer (JSF dus), kun je overal de faces context oproepen. Deze wordt via aan static methode uit threadlocal storage gehaald. Vanaf de faces context kun je de external context oproepen. Omdat je er via een static method bij kan, betekent dit dat je er vanaf elke bean bij kan, hoewel method calls diep je ook zit.

Ik denk echter niet dat een request voor een webservice normaliter door de faces servlet heen gaat.

It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.


  • Creatinus
  • Registratie: September 2004
  • Laatst online: 13-02 20:36
Het is zo dat er WSDL2Java wordt gebruikt om van een WSDL een Java klasse te genereren, zodat er een stub is om met die webservice te communiceren.

Nu is het zo dat die WSDL2Java tool de hostnaam + poort hard in de code propt. Normaal een minder groot probleem omdat je die webservice depployed en klaar bent. Echter zal deze webservice op verschillende systemen gedeployed gaan worden waar dus steeds de host en de poort anders kunnen zijn. Je wilt natuurlijk niet voor elke keer dat dat gebeurd de code opnieuw aanpassen. Met de klasse java.net.InetAddress kan je wel de host opvragen maar niet het poort nummer. Vandaar dat er op zoek is gegaan hoe het poort nummer bekend kan worden....

  • NDF82
  • Registratie: Januari 2002
  • Laatst online: 28-11 20:53

NDF82

Doomed Space Marine

Creatinus schreef op donderdag 22 februari 2007 @ 09:26:
Het is zo dat er WSDL2Java wordt gebruikt om van een WSDL een Java klasse te genereren, zodat er een stub is om met die webservice te communiceren.

Nu is het zo dat die WSDL2Java tool de hostnaam + poort hard in de code propt. Normaal een minder groot probleem omdat je die webservice depployed en klaar bent. Echter zal deze webservice op verschillende systemen gedeployed gaan worden waar dus steeds de host en de poort anders kunnen zijn. Je wilt natuurlijk niet voor elke keer dat dat gebeurd de code opnieuw aanpassen. Met de klasse java.net.InetAddress kan je wel de host opvragen maar niet het poort nummer. Vandaar dat er op zoek is gegaan hoe het poort nummer bekend kan worden....
Adress kun je wijzigen dmv properties. Zie hieronder.
Java:
1
2
3
4
5
6
7
final SomeInterface port = 
        new SomeInterfaceService().getSomeInterfacePort();
final Map<String, Object> requestContext = 
        ((BindingProvider)port).getRequestContext();
requestContext.put(
        BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
        "http://localhost:8080/path/to/my/webservice");

(Dir is overigens wel JAX-WS)

Pentium 233MHz MMX + Diamond Monster 3D 3DFX Voodoo II


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

JBoss, WebLogic en volgens mij WebSphere vertalen standaard de URL die in je WSDL staat naar de URL waar ze het deployen. Dit houdt in dat er een hostname opgezocht wordt en de poort waarop de server staat te luisteren.

Dit is echter geen garantie dat een client met die URL ook bij je WS kan. Het kan best zijn dat er een load balancer of apache server voor hangt die een andere poort heeft.

Je weet eigenlijk niets over een poort, tenzij je een request object tot je beschikking hebt. Er zijn namelijk tig mogelijkheden om te zorgen dat de URL (host/port/context root) te veranderen. De client kan zelfs zijn host bestand aanpassen zodat localhost naar jouw server wijst. (of jouw URL naar localhost :))

Fat Pizza's pizza, they are big and they are cheezy


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

* BalusC heeft zojuist wat offtopic posts naar [Java] webbased frameworks afgesplitst.

  • flowerp
  • Registratie: September 2003
  • Laatst online: 11-09 18:20
... naar flowerp in "[Java] webbased frameworks"

[ Voor 96% gewijzigd door flowerp op 25-02-2007 16:43 ]

It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.

Pagina: 1