TLDR是否有可能創建一個IP地址(如0.0.0.0:8080/services
的SERVER_1
)或在WSDL內容,同時有人在閱讀它的任何其他財產的「別名」?類似:Java的WSDL修改或隱藏Web視圖的某些屬性
<entry key="org.apache.cxf.endpoint.private" value="true"/>
對於服務列表中,保持功能不變,但隱藏的服務列表。
如果是,如何?如果沒有,有沒有辦法隱藏它,而不使用@XmlTransient
,因爲如果我們使用它,並從我的理解,程序甚至不會映射此元素,因此不再工作。
我正在使用使用Spring和JAX-RS的SOAP服務。
經過道德黑客測試,我們正在保護我們的應用程序,結果表明我們在我們的URL上公開了服務和生產IP地址。
我們能夠隱藏網絡視圖中的服務列表,例如,如果我們訪問http://localhost:8080/foo/services
我們得到這樣的文字:
No services have been found.
這很好,我們已經按照this answer幹過,但而不是cxf-servlet.xml
文件,它在applicationContext-{moduleName}.xml
文件中。現在
,如果我們知道,或者訪問任何WSDL路徑中,我們仍然可以看到WSDL內容(包括生產性IP地址),例如,如果我們進入:
http://localhost:8080/foo/services/bar?_wsdl
我們有類似的定義如下(我編輯出於安全考慮):
<application
xmlns="http://wsdl.dev.java.net/2009/02"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<grammars/>
<resources base="http://localhost:8080/foo/services/bar">
<resource path="/VX">
<resource path="/anotherPath">
<method name="POST">
<request>
<representation mediaType="application/x-www-form-urlencoded">
<param name="someParam" style="query" type="xs:string"/>
</representation>
</request>
<response>
<representation mediaType="application/json">
<param name="anotherParam" style="plain" type="xs:string"/>
</representation>
</response>
</method>
</resource>
</resource>
</resources>
</application>
我怎麼能,對運行時間例如編輯屬性
<resources base="http://localhost:8080/foo/services/bar">
要像
<resources base="SERVER_1">
所以,我們內部知道什麼IP地址不SERVER_1
了,但外面的人管理到那裏不,換句話說,我怎麼可能創建的IP地址的別名和使用它而不是真正的IP地址呢?
這是因爲我們有大約10臺服務器,每臺服務器都有不同的IP地址,如果我們需要做一些生產調試,我們需要知道我們在哪個服務器,所以我們希望避免隱藏整個WSDL內容(因爲我知道它可以完成,因爲模塊具有此配置)。
我知道我可以使用@XmlTransient
註解,但是作爲每docs:
阻止將JavaBean屬性/類型XML表示的映射。
所以,在我的理解中,如果我在包含IP地址的屬性上使用這個註解,那麼它將不再起作用。
如果這是不可能的,那麼爲了針對這種特殊情況制定解決方法,您還有哪些其他建議?
我們創建一個自上而下的方法的服務(即我們給出的WSDL,我們使用wsdl2java
來從它創建Java對象+服務接口)
我假設你正在用自下而上的方法創建服務? – Namphibian
@Nafphibian你的意思是「自下而上的方法」*?對不起,我沒有得到你所指的。這些服務已經開發出來了,我只是給這個系統一些維護... – Frakcool
當開發WSDL文件時,自頂向下和自下而上是兩種不同的策略,但是在您的情況下,您正在維護它,所以評論無效。 – Namphibian