小编jon*_*jon的帖子

Jersey API + JPA/Hibernate Criteria Lazy Loading无法正常工作

这是一个简化的POJO我有:

@Entity
@Table( name = "Patient" )
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn
(
                name="Discriminator",
                discriminatorType=DiscriminatorType.STRING
                )
@DiscriminatorValue(value="P")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Patient implements Serializable{

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "ID", unique = true, nullable = false)
    protected Integer ID;

    @ManyToOne(targetEntity = TelephoneType.class, fetch=FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name="IDPhoneType")
    protected TelephoneType phoneType;


    @JsonProperty(required=false, value="phoneType")
    public TelephoneType getPhoneType() {
        return phoneType;
    }
    public void setPhoneType(TelephoneType phoneType) {
        this.phoneType = phoneType;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这是我的班级TelephoneType:

@Entity
@Table( name = "TelephoneType" ) …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa lazy-loading jersey-2.0

10
推荐指数
1
解决办法
2009
查看次数

tomcat 7:自动将https请求重定向到端口8443

在tomcat7上,我们的Web应用程序通过https over port运行8443并且工作正常,但我们无法将https默认端口(443)重定向到,8443因此每当我们必须访问时,必须在URL中包含':8443'应用.我包含了server.xml文件的一些部分.为了能够加载我们的页面而不必在URL中输入端口信息,应该怎么做?

 <Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIEncoding="UTF-8"
           enableLookups="false"
           redirectPort="8443" />

<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIEncoding="UTF-8"
           enableLookups="false"
           redirectPort="8443" />

<Connector port="443" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIEncoding="UTF-8"
           enableLookups="false"
           redirectPort="8443" />
...

<Connector port="8443"
            maxHttpHeaderSize="65536"
            scheme="https"
            secure="true"
            SSLEnabled="true"
            clientAuth="false"
            enableLookups="true"
            acceptCount="100"
            disableUploadTimeout="true"
            maxThreads="200"
            sslProtocol="TLS"
            keystoreFile="/toto/has/a/certificate.jks"
            keystorePass="totohasapassword"
            protocol="org.apache.coyote.http11.Http11NioProtocol" />
Run Code Online (Sandbox Code Playgroud)

ssl https tomcat server.xml tomcat7

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

JPA Criteria:将int转换为String然后从结果String的子字符串中选择

我有一个String作为参数(实际上是一个valueOf(一个整数),并希望将它与DB中的int值的子字符串进行比较.这是我的代码:

ClinicPatients clp = null;

// Get the criteria builder instance from entity manager
final CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();     
// Create criteria query and pass the value object which needs to be populated as result
CriteriaQuery<ClinicPatients> criteriaQuery = cb.createQuery(ClinicPatients.class);     
// Tell to criteria query which tables/entities you want to fetch
final Root<ClinicPatients> rootClp = criteriaQuery.from(ClinicPatients.class);

criteriaQuery.select(rootClp);

Expression<String> e1 = cb.function("CONVERT", String.class, rootClp.get(idCPFieldName));

Predicate p1 = cb.equal(cb.substring(e1, 1, 3), idClinicPatient);
criteriaList.add(p1);

criteriaQuery.where(p1);

// Here entity manager will …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa criteria criteria-api

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

amazon aws ubuntu java mysql webservice"错误调用Driver#connect"

我们在tomcat 7/java7/hibernate/mysql5上运行了一些Web服务.一切都在我的电脑上的localhost tomcat服务器上运行完美,但是当我们在AWS Ubuntu服务器上部署应用程序时,我们收到以下错误消息:

2014年3月25日下午9:59:52 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl配置WARN:HHH000402:使用Hibernate内置连接池(不供生产使用!)2014年3月25日9:59: 52 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO:HHH000401:在URL [jdbc:mysql:// ec2-54-197-214-209]使用驱动程序[com.mysql.jdbc.Driver]. compute-1.amazonaws.com:3306/ChronoMetriq] 2014年3月25日下午9:59:52 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO:HHH000046:连接属性:{user = root,password = **} Mar 25,2014 9:59:52 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO:HHH000006:Autocommit mode:false Mar 25,2014 9:59:52 PM org.hibernate.engine .jdbc.connections.internal.DriverManagerConnectionProviderImpl配置INFO:HHH000115:Hibernate连接池大小:10(min = 1)创建Sess时出错 ionFactory:**错误调用驱动程序#connect null 2014年3月25日下午9:59:52 com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException严重:无法将RuntimeException映射到响应,重新抛向HTTP容器 显示java.lang.NullPointerException 在ca.chronometriq.webterm.restapi.Process.getQueueName(Process.java:132)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 57)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:606)在com.sun.jersey.spi.container.JavaMethodInvokerFactory $ 1.invoke( JavaMethodInvokerFactory.java:60)在com.sun.jersey.server.impl.model.method.dispatch.Abs​​tractResourceMethodDispatchProvider $ TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)在com.sun.jersey.server.impl.model.method. dispatch.ResourceJavaMethodDispatcher.dispatch(资源 JavaMethodDispatcher.java:75)在com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)在com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(右侧HandPathRule.java:147)com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept( RightHandPathRule.java:147)在com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)在com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.的java:1469)在com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)在com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java):416)在com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)在com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)在javax.servlet.http.HttpServlet.service(HttpServlet.java:728)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.的java:210)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)在org.apache.catalina.authenticator .AuthenticatorBase.invoke(AuthenticatorBase.java:502)在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)在Org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)org.apache.catalina.core.StandardEngineValve.in voke(StandardEngineValve.java:118)在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1024)在org.apache .coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1686)在java.util.concurrent.ThreadPoolExecutor.runWorker(的ThreadPoolExecutor .java:1145)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)at java.lang.Thread.run(Thread.java:744)

这是我的hibernate.cfg.xml文件内容:

    <?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD …
Run Code Online (Sandbox Code Playgroud)

java tomcat hibernate amazon-web-services tomcat7

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

Jersey ContainerRequestFilter:抛出“ abortWith”且状态被禁止后得到404(403)

带有令牌身份验证+基于角色的授权的Jersey 2.22 API(我保护API的方式基于本文的公认答案:使用JAX-RS和Jersey进行基于REST令牌身份验证的最佳实践。最好在阅读之前阅读它试图理解我的问题):

这是我的web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>

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

<servlet>
    <servlet-name>JerseySpringServlet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>ca.toto.api.filters</param-value>
    </init-param>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>ca.toto.api.restapi</param-value>
    </init-param>

    <init-param>
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>ca.toto.api.filters.AuthenticationFilter;ca.toto.api.filters.AuthorizationFilter;com.toto.api.restapi.TaskRestService</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>JerseySpringServlet</servlet-name>
    <url-pattern>/filters/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>JerseySpringServlet</servlet-name>
    <url-pattern>/restapi/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

当我调用任务 Web服务时,流程毫无问题地进入第一个过滤器(AuthenticationFilter)(@Priority(Priorities.AUTHENTICATION)),验证我的令牌,从解码的令牌中获取用户,然后将其注册为委托人然后传入第二个过滤器AuthorizationFilter@Priority(Priorities.AUTHORIZATION)),在这里我从安全上下文中获取用户,获取其角色,然后检查他是否有权进行调用。如果是,请正常退出过滤器(如果否),请使用javax.ws.rs.container.ContainerRequestContextabortWith方法发送状态为403的响应:

@Secured
@Provider
@Priority(Priorities.AUTHORIZATION)
public class AuthorizationFilter implements ContainerRequestFilter {

    ...
try {
        boolean isAllowed = false;
        // Check if the …
Run Code Online (Sandbox Code Playgroud)

java rest restful-authentication httpresponse jersey-2.0

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

Java Rest Web服务:String param中的'+'字符被视为空格字符

我的客户端应用程序将一个字符串发送到服务器端进行解码.有问题的字符串可能包含"+"字符.我的问题是当我想要处理字符串时,它会消除'+'字符消失(可能被视为连接运算符.我怎么能解决这个问题?字符串不是正确的类型吗?我应该使用字节[]代替?

客户端:

 $.ajax({
    type: "GET",
    url: "my/url/DecryptString",
    data: "encryptedString="+$("#myStringInput").val(),
    ...
Run Code Online (Sandbox Code Playgroud)

服务器端代码:

 ...
 public String decryptString(@QueryParam("encryptedString") String encryptedString) {
        logger.info("=====> decryptString()");

        String decryptedString = null;
        Properties properties = new Properties();

            logger.debug("encryptedString: " + encryptedString);

        // get crypto properties
        try {
          properties.load(toto.class.getResourceAsStream("/config.properties"));
        } catch (IOException e1) {
            logger.error(e1.getStackTrace());
        }
        if(properties.isEmpty()) {
            logger.error("Properties file is EMPTY!");
        }
        String encodeKey = properties.getProperty("toto.crypt.encodeKey");

        decryptedString = Crypto.Decrypt(encodeKey, encryptedString.toString());

        return decryptedString;
    }
Run Code Online (Sandbox Code Playgroud)

在客户端作为加密字符串传递的字符串是:'7NFASg ++ qLOSfDXBR8wzcw =='

以下是服务器端的跟踪:

DEBUG encryptedString:7NFASg qLOSfDXBR8wzcw ==

java string escaping

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