小编Jpn*_*pnh的帖子

CXF jaxws端点相对发布地址

在我的CXF Web服务端点配置中尝试使用相对发布地址时遇到了很多困难.

我有一个简单的Java-first JAX-WS项目,其中包含以下配置文件:

applicationContent-cxf.xml:

<beans xmlns=...>
    ...
    <jaxws:endpoint
        id="helloWorldService"
        implementorClass="org.helloworld.ws.HelloWorldServiceImpl"
        implementor="#helloWorldServiceImpl" <!-- spring managed -->
        endpointName="sayHello"
        address="HelloWorldService"/>
</beans>
Run Code Online (Sandbox Code Playgroud)

web.xml中:

<web-app>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            WEB-INF/applicationContext.xml
            WEB-INF/applicationContext-cxf.xml
        </param-value>
    </context-param>

    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <servlet>
        <servlet-name>HelloWorldServlet</servlet-name>
        <display-name>Hello World Servlet</display-name>
        <servlet-class>
            org.apache.cxf.transport.servlet.CXFServlet
        </servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorldServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)

根据http://cxf.apache.org/docs/servlet-transport.html,似乎我应该能够指定发布地址,HelloWorldService并且服务的URL将解析为(例如)http:// localhost: 8080/services/HelloWorldService.但是当我尝试访问http:// localhost:8080/services/HelloWorldService?wsdl时,我得到了404.如果我将jaxws端点中的发布地址更改为绝对URL,http://localhost:8080/services/HelloWorldService我可以访问wsdl.

我想尽可能指定一个相对端点地址.我是使用CXF(以及编写Web服务)的新手,所以非常感谢任何帮助!

更新1:

请注意,我正在将我的Web服务部署到Tomcat 7.我不知道是什么记录它,但是我的启动日志中的一行是状态Setting the server's publish address to be HelloWorldService.如果有人需要更多信息来帮助我,请告诉我.

更新2:

似乎CXF检测CXFServlet是否"正在使用",如果不是,则使用嵌入式jetty实例.http://cxf.apache.org/docs/xfire-migration-guide.html#XFireMigrationGuide-HTTPandServletSetup.因此,由于某种原因,CXF使用嵌入式jetty实例而不是我的servlet.但是,除了我的web.xml中的HelloWorldServlet之外,我不知道我需要什么进一步的配置,而且CXF文档对我没有帮助.

spring web-services cxf jax-ws

8
推荐指数
1
解决办法
2万
查看次数

使用 Spring Data JPA 接口在 Intellij 中调用不明确的方法

intellij 报告了一个奇怪的模棱两可的方法调用错误。我正在使用 spring data JPA 接口,该接口还实现了具有相同方法签名的接口:

用户存储库:

@Repository
public interface UserRepository extends CrudRepository<User, String>, UserProvider {
} 
Run Code Online (Sandbox Code Playgroud)

用户提供者:

public interface UserProvider {
    User findOne(String userId);
}
Run Code Online (Sandbox Code Playgroud)

除了需要第二个接口的原因之外,我假设由于这些接口和 findOne 的方法签名是相同的,所以编译器在处理歧义时不会有问题。是我对Java的理解不正确,还是intellij的问题?这是通过泛型解决的 CrudRepository 接口的问题吗?

java intellij-idea spring-data-jpa intellij-14

5
推荐指数
1
解决办法
2581
查看次数

在xml中引用xsd时xsl转换问题

我对XSL很新,需要帮助解决转换问题.我有一个由XSD描述的XML文件.我使用XSL文件将XML转换为HTML.我想在XML文件中引用XSD,但是当我这样做时,XML不会被转换.

示例XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="example.xsl"?>

<root>
<!--
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://localhost" xsi:schemaLocation="http://localhost example.xsd">
-->
  <element>Element 1</element>
  <element>Element 2</element>
  <element>Element 3</element>
</root>
Run Code Online (Sandbox Code Playgroud)

示例XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <ul>
      <xsl:for-each select="root/element">
        <li><xsl:value-of select="."/></li>
      </xsl:for-each>
    </ul>
  </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

示例XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://localhost"
  xmlns="http://localhost"
  elementFormDefault="qualified">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="element" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

在XML中,如果我使用注释掉的root标签,Firefox和Chrome不会转换xml.但是,如果我只使用普通的<root>标签,那么转换就可以了.

任何人都可以解释为什么在我的XML中引用XSD时不会发生XSL转换?任何帮助表示赞赏!

xml xslt xsd

4
推荐指数
1
解决办法
5142
查看次数